Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DLL引用未复制到项目bin中_C#_.net_Visual Studio_.net Assembly_Solution - Fatal编程技术网

C# DLL引用未复制到项目bin中

C# DLL引用未复制到项目bin中,c#,.net,visual-studio,.net-assembly,solution,C#,.net,Visual Studio,.net Assembly,Solution,项目A引用项目B,项目B引用外部DDL(使用NuGet恢复)。DLL应复制到项目A的bin文件夹中(与项目B的DLL一起): 在我的例子中,当运行项目A时,我会引发以下异常: 无法加载文件或程序集的PostSharp,版本=3.2.18.0, 区域性=中性,PublicKeyToken=b13fd38b8f9c99d7'或其 依赖关系。系统找不到指定的文件 DLL未被复制到项目A的bin中。来自项目B的所有其他外部引用都被复制了,这让我很困惑 对于所有涉及的引用,Copy Local设置为tr

项目A引用项目B项目B引用外部DDL(使用NuGet恢复)。DLL应复制到项目A的bin文件夹中(与项目B的DLL一起):

在我的例子中,当运行项目A时,我会引发以下异常:

无法加载文件或程序集的PostSharp,版本=3.2.18.0, 区域性=中性,PublicKeyToken=b13fd38b8f9c99d7'或其 依赖关系。系统找不到指定的文件

DLL未被复制到项目A的bin中。来自项目B的所有其他外部引用都被复制了,这让我很困惑

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

我该怎么做


注意:使用Visual Studio 2013。

我找到的选项是:

  • 在项目a中添加对PostSharp的引用
  • 在项目B中添加伪代码,以便编译器能够检测到引用正在被使用
  • 添加生成事件以强制复制DLL
我不喜欢上面的任何解决方案。在我看来,它们都是黑客,从长远来看,只会带来更难以维护的解决方案


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

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

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


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

可能的重复事实上,更好的答案是我认为这是一个问得很好的问题:)我还发现DLL需要使用与.net Framework相同的版本在我的情况下,一个项目使用了客户端配置文件,而不是.net framework 4的完整版本。更改为完整版本修复了该问题。