在VS2012中,我有1个sln文件,下面有几个项目。有些只是代码库,有些则是Web应用程序。然后我们还有一个网站项目......
此网站项目最近更新为.NET 4.0,这也意味着我们需要更新构建服务器使用的wdproj。我试过这个,但唉,构建一直在失败 我决定摆脱wdproj并使用较新的Publish配置文件。这在VS2012中非常容易生成 在构建服务器上,我使用了以下命令:
<MSBuild Projects="<path to publishproj file>" Properties="DeployOnBuild=true;
PublishProfile=name-of-profile; VisualStudioVersion=11.0" />
在PublishProfile中,WebPublishMethod是FileSystem,因此它只需要将所有内容复制到文件夹中。
该网站项目包含6个由msbuild构建的ProjectReferences。生成的文件夹包含这些项目的dll,但缺少这些项目的所有引用的dll,也没有复制附属程序集(子文件夹中的已编译资源文件)。
所以我错过了几个dll!
有没有人知道这方面的解决方案?
我可以找到几个描述相同行为的帖子,但他们要么没有解决方案,要么没有次优的修复。
示例:MSBuild doesn't copy dll references from dependent projects
类似的问题:MSBuild Package via Command line not including all my Assemblies
我也开始研究msbuild进程到Microsoft.WebSite.Publishing.targets中使用的特定拷贝代码。在目标'AfterResolveReferences'中,引用项目的dll被复制,但不是依赖dll。
非常感谢所有帮助!
答案 0 :(得分:0)
答案 1 :(得分:-1)
在网站项目中包含来自项目参考的所有引用的dll并不总是一个好主意,特别是当您使用依赖注入时:您的Web项目只是想添加对dll / project接口的引用,而不是任何具体的实现dll 。因为如果直接向实现dll / project添加引用,就不能阻止开发人员在实现dll / project的具体类上调用“new”而不是通过接口调用,它也是你所说的“硬编码” “在您的网站上使用该实施。