【发布时间】: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