为什么MSBuild会将复制本地设置为dll的dll复制?

时间:2014-12-03 11:45:04

标签: asp.net .net visual-studio msbuild web-application-project

这是我们解决方案的结构:

Solution.sln
  WebApp.csproj
    references ClassLibrary
  ClassLibrary.csproj
    references System.Net.Http.Formatting.dll with Copy local = false

当我使用WebApp和ClassLibrary的源代码构建解决方案时,请按预期复制本地工作,并且不会将System.Net.Http.Formatting.dll复制到WebApp / bin目录。

但是,当我们将项目分发给最终客户端时,我们只给它们引用编译类库(.dll)的WebApp源代码。在这种情况下,解决方案如下所示:

Solution.sln
  WebApp.csproj
    references ClassLibrary.dll which uses System.Net.Http.Formatting.dll

编译此部分编译的解决方案时,会将System.Net.Http.Formatting.dll复制到WebApp / bin文件夹,这会给我们带来一些麻烦。

我已经检查了详细的构建输出,并且复制任务复制了dll,这个dll的源位置是

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Net.Http.Formatting.dll

还有一些其他提到的System.Net.Http.Formatting.dll程序集,我不太明白。

如何确保System.Net.Http.Formatting.dll没有复制到bin文件夹?

谢谢!

1 个答案:

答案 0 :(得分:1)

看起来copylocal表示法是在项目文件中,客户没有阅读,所以它怎么知道?您可以将引用直接添加到它们具有的项目文件中,而不是通过传递依赖项来发现它们。然后你可以将它们标记为no-copy-local。我认为将它们添加为WebApp.csproj的引用应该完全在GUI中完成。从那开始,然后如果它不是很好的话,就要弄乱它。