不复制引用的库

我有ProjectA(WPFApplication)引用ProjectB(ClassLibrary) 。 在ProjectB内部我有wpf窗口,它使用来自ThirdParty.dll的控件,因此我从ProjectB引用。

问题是它没有在ProjectA的输出文件夹中找到ThirdParty.dll ,并且引发了xaml解析运行时exceprion。 GAC中没有ThirdParty.dll 。 “本地复制”设置为true。 如果我在ProjectA的输出文件夹中手动添加该库,它也可以工作,如果我在我的cs文件中使用了ThirdParty.dll somwhere它也可以工作。

我怎么解决这个问题?

原因是如果设置了“复制本地”,Visual Studio仅将资源复制到输出文件夹。 只需设置复制本地的引用,你应该没问题。

查看此链接 ,了解其工作原理。

引用ProjectA时,不会自动引用ProjectB的引用。 为此,您需要在ProjectA中添加对ThirdParty.dll的引用,如果您只在XAML中使用它。 编译器不会复制仅在XAML中使用的引用。 但是如果你在代码中使用它们,它们就会被复制。

这与此处讨论的问题相同

您应该将对thrid方dll的引用添加到您希望它出现在输出目录中的项目中。 如果Copy Local设置为true,它将显示在bin目录中,无论您是否在代码或xaml中使用它。

将这样的内容添加到ProjectB.csproj

  ThirdParty.dll PreserveNewest   

这说服VS将ThirdParty.dll复制到ProjectA的输出文件夹(无需向ProjectA添加任何关于ThirdParty.dll的内容 )。
我仍然觉得它不合适,因为如果ThirdParty.dll在NuGet包中,它的路径通常包含版本号,当你更新包时它会改变。
我还没有尝试过,但我不希望NuGet像在那样更新路径。