WPF UserControl 库在另一个项目中使用时不包含依赖项

问题描述 投票:0回答:1

我在 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。

我尝试过的一些事情:

  • 清理/重建
  • 删除.vs文件夹
  • 安装一个不同的第三方库来完成同样的事情
  • 甚至重新安装了 VS 2022!

我在这里缺少什么?

wpf visual-studio xaml user-controls
1个回答
0
投票

哇。已经为此搜索/工作了 2 天。事实证明,这是一个令人震惊的 Visual Studio bug,他们已经 14 年没有修复了!解决方案:

“技巧是将 Copy Local 设置为 False,保存项目,然后将其重置为 True - 再次保存。”

完整的SO解决方案在这里

© www.soinside.com 2019 - 2024. All rights reserved.