DLL引用未复制到项目bin文件夹中

43

项目A 引用了 项目B,而项目B引用了一个外部DDL(使用NuGet还原)。该DLL应复制到项目A的bin文件夹中(与项目B的DLL一起):

DLL References Copied To Bin

在我的情况下,运行项目A时,抛出以下异常:

无法加载文件或程序集“PostSharp, Version=3.2.18.0, Culture=neutral, PublicKeyToken=b13fd38b8f9c99d7”或它的某一个依赖项。系统找不到指定的文件。

DLL未被复制到项目A的bin中。从项目B引用的所有其他外部引用都被成功复制,这让我感到困惑。

对于涉及的所有引用,Copy Local都设置为true。例如:

Copy Local Reference

我该怎么做?

注意:使用Visual Studio 2013。


实际上,更好的答案是https://dev59.com/UXNA5IYBdhLWcg3wPLL-?lq=1。 - Bobson
12
我认为这是一个很好的问题示例 :) - Mike
3个回答

21

我找到的选项如下:

  • 在项目A中添加对PostSharp的引用。
  • 在项目B中添加虚拟代码,以便编译器能检测到该引用正在被使用。
  • 添加构建事件来强制复制DLL。

我不喜欢以上任何一种解决方案。在我看来,它们只是一些hack方法,在长期运行中只会导致更难维护的解决方案。

我通过使用共同的输出目录来解决了这个问题。这似乎是许多人推荐的解决方案。我也体验到了更快的构建时间。请参见此Stackoverflow帖子


4
我也发现所需的 dll 需要使用相同版本的 .net framework。 - majjam
在我的情况下,一个项目使用了 .net framework 4 的客户端配置文件而不是完整版本。更改为完整版本解决了问题。 - pilsdumps

0
当我遇到这个问题时,是因为我改变了一个项目的名称,但没有改变程序集名称 - 它与解决方案中另一个项目的程序集名称完全相同。

0

我在项目B中添加了一些虚拟(未使用)代码,引用了所需的DLL。

因此,编译器会猜测它必须将DLL复制到项目A的输出中。


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