DLL引用没有复制到项目bin中

时间:2014-05-08 14:51:05

标签: c# .net visual-studio .net-assembly solution

项目A 引用 项目B 项目B 引用外部DDL(使用NuGet恢复)。 DLL应该被复制到 Project A 的bin文件夹中(以及 Project B 的DLL):

DLL References Copied To Bin

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

  

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

DLL未被复制到 Project A 的bin中。来自 Project B 的所有其他外部引用都被正确复制,这对我来说很困惑。

对于所涉及的所有引用,

Copy Local都设置为true。例如:

Copy Local Reference

我该怎么做?

注意:使用Visual Studio 2013。

3 个答案:

答案 0 :(得分:20)

我找到的选项是:

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

我不喜欢上述任何一种解决方案。在我看来,它们是黑客攻击,从长远来看,它们只会产生一种更难以维护的解决方案。

我已使用公共输出目录修复了该问题。这似乎是许多人推荐的解决方案。我也经历了更快的构建时间。请参阅this Stackoverflow post

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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