第三方引用的dll未被复制到生成目录中。

4
我有一个第三方的.NET dll被我自己的dll/类库项目“A”引用和使用。我的控制台应用程序项目“B”引用了项目“A”。
我的问题是第三方dll没有被复制到控制台应用程序项目“B”的构建输出中。
这是什么问题?在我的dll/类库中引用的第三方dll设置为LocalCopy=true。
我正在使用VS2008和.NET 3.5。
先行致谢。
1个回答

7

基本上,项目B需要明确引用第三方DLL。引用不被认为是传递的。(如果您尝试使用项目A中公开来自第三方库的类型的任何类,甚至会出现编译错误。)

这可能有点麻烦,但至少可以清楚地了解您真正引入的内容。


无论哪种方式,您都可以使用共同的OutDir同时构建控制台应用程序B和库项目A,您的第三方dll将在此处。<br /> 还要注意,如果您引用了dll而不是项目,则会复制第三方库(如果它与proj A dll位于同一目录中)。 - Benjamin Baumann
我有一个类似的设置,其中Proj B添加了Proj A的项目引用。这不应该足以复制Proj A的所有输出(包括对Proj B的outdir的引用)吗? - lysergic-acid
@lysergic-acid:为什么A项目的输出会包含对B项目输出目录的引用?但是一般来说,当您向项目添加引用时,我认为这只是针对该项目创建的程序集。 - Jon Skeet
我有一个WCF服务项目,引用了一些DLL(system.data.sqlite)。我有一个宿主项目(控制台),引用了该服务。这意味着我没有将data.sqlite DLL复制到宿主输出目录中... - lysergic-acid
@lysergic-acid:不,你不需要这样做。SQLite程序集不是项目输出的一部分 - 如果您需要在另一个项目中使用它,则还必须将其引用添加到该项目中,就这么简单。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接