项目A引用项目B,项目B引用外部DDL(使用NuGet恢复)。 DLL应该被复制到Project A的bin文件夹(以及Project B的DLL):
在我的例子中,当运行项目A时,我得到以下异常抛出:
无法加载文件或程序集'PostSharp,Version = 3.2.18.0,Culture = neutral,PublicKeyToken = b13fd38b8f9c99d7'或其依赖项之一。该系统找不到指定的文件。
DLL未被复制到项目A的bin中。项目B中的所有其他外部引用都被正确复制,这对我来说很困惑。
所有参考文献都将Copy Local
设置为true。例:
我该怎么做呢?
注意:使用Visual Studio 2013。
我找到的选项是:
我不喜欢上述任何解决方案。在我看来,它们是黑客攻击,从长远来看,只能制定一个更难以维护的解决方案。
我已经通过使用公共输出目录修复了该问题。这似乎是许多人推荐的解决方案。我也经历了更快的构建时间。见this Stackoverflow post。
当我遇到这个问题时,这是因为我更改了项目的名称,但没有更改程序集名称 - 它与解决方案中另一个项目的程序集名称相同。
我在Project B上添加了一些虚拟(未使用)代码,引用了所需的DLL。
因此,编译器会猜测它必须将DLL复制到项目A输出中。