【问题标题】:Why MSBuild DOES copy dlls with copy local set to false?为什么 MSBuild 会复制 dll 并将本地复制设置为 false?
【发布时间】:2015-01-31 23:18:09
【问题描述】:

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

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 文件夹中?

谢谢!

【问题讨论】:

  • 你可以做的一件事是在你的 post build 事件中输入del $(TargetDir)System.Net.Http.Formatting.dll /Q /F
  • 您应该首先弄清楚该过程中的哪个步骤是复制文件。
  • @T.S.我们不希望 bin/ 文件夹中的 dll 允许我们的客户将他们自己的 dll 放在那里。假设我们在版本 2 中使用 System.Net.Http.Formatting.dll,但我们的客户希望在版本 4 中使用 System.Net.Http.Formatting.dll。这就是我们保持 bin/ 清洁并加载我们的 dll 版本的原因从其他位置。从 bin/ 文件夹中删除文件也会删除客户的版本。不过还是谢谢!
  • @jdlugosz 从构建详细输出中,我想它是这个:文件“C:\ Program Files(x86)\ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion中的目标“_CopyFilesMarkedCopyLocal”。目标”。任务“复制”。这些信息有帮助吗?谢谢
  • 从你所说的来看,听起来你的构建和分发逻辑很糟糕

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


【解决方案1】:

看起来 copylocal 符号位于客户未读取的项目文件中,那么它怎么知道?您可以将引用直接添加到它们拥有的项目文件中,而不是让它们通过传递依赖项被发现。然后您可以将它们标记为 no-copy-local。我认为将它们作为参考添加到 WebApp.csproj 应该完全在 GUI 内完成。从那个开始,如果它不是很好,然后摆弄 XML。

【讨论】:

  • 完全正确。我有同样的感觉,“本地复制”没有通过传递引用传输。我将尝试直接引用这些 dll 的技巧,看看会发生什么。谢谢
  • 转让,因为没有任何迹象可以找到。它没有合并到 dll 中。接受答案怎么样?还是还有什么问题?
  • 是的.. 明天,我将尝试按照您的建议直接添加对 Web 应用程序项目的引用,如果有帮助,我会将答案标记为正确。否则,我们将不得不考虑其他解决方案。 :) 再来一次:非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
相关资源
最近更新 更多