我在 VS 中创建了一个空白解决方案,添加了一个“src”文件夹,然后将一个 WPF 用户控件(框架)项目添加到该文件夹(“WpfWorkspace”)。框架版本 4.7.2.
我正在该库中设计一个名为“Workspace”的用户控件。此控件需要第三方库 (Wpf.Controls.PanAndZoom),该库也有自己的依赖项(PanAndZoom.dll、Wpf.MatrixExtensions.dll)。 NuGet 下载所有这些并将它们放入 References 文件夹中。
如果我在这个阶段构建,它会将所有这些库正确复制到 UserControl lib bin 中:
我已将第三方控件(“ZoomBorder”)包含在我的工作区控件中:
<UserControl x:Class="WpfWorkspace.Workspace"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WpfWorkspace"
xmlns:paz="clr-namespace:Wpf.Controls.PanAndZoom;assembly=Wpf.Controls.PanAndZoom"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<paz:ZoomBorder>
</paz:ZoomBorder>
</UserControl>
但是,Intellisense 在
paz:ZoomBorder
上显示以下错误:
Error XDG0003 Could not load file or assembly 'Wpf.Controls.PanAndZoom, Version=2.3.4.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. WpfWorkspace C:\Users\stigz\source\repos\0.MyCode\CS\Framework\WpfWorkspace\WpfWorkspace\Workspace.xaml 10
奇怪的是,它会编译,如果我关闭设计器视图,错误就会从累积错误窗口中消失。它可以编译,因为所有的 dll 都在 bin 文件夹中。我也曾遇到过没有显示此错误的情况。
下一个问题是我通过在同一解决方案中创建另一个项目来制作测试 WPF 应用程序。我包含 WpfWorkspace 作为参考,并将 UserControl 包含在测试表单中:
<Window x:Class="WpfWorkspace.Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ms="clr-namespace:WpfWorkspace;assembly=WpfWorkspace"
xmlns:local="clr-namespace:WpfWorkspace.Test"
xmlns:ws="clr-namespace:WpfWorkspace;assembly=WpfWorkspace"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<ws:Workspace>
</ws:Workspace>
</Window>
它显示完全相同的错误:
XDG0003 Could not load file or assembly 'Wpf.Controls.PanAndZoom, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. WpfWorkspace.Test C:\Users\stigz\source\repos\0.MyCode\CS\Framework\WpfWorkspace\WpfWorkspace.Test\MainWindow.xaml 11
但是,这次这是有道理的,因为当我构建解决方案时,工作区的依赖项不会复制到应用程序 bin 文件夹,只是 UserControl lib 的引用:
我也不认为依赖库是集成的,因为在 UserControl 构建和测试应用程序构建中 WpfWorkspace.dll = 8kb。
我尝试过的一些事情:
我在这里缺少什么?
哇。已经为此搜索/工作了 2 天。事实证明,这是一个令人震惊的 Visual Studio bug,他们已经 14 年没有修复了!解决方案:
“技巧是将 Copy Local 设置为 False,保存项目,然后将其重置为 True - 再次保存。”