上下文
在VS2012中,我有一个sln文件,在其下有几个项目。其中一些只是代码库,其他是Web应用程序。然后我们还有1个Web站点项目...
这个Web站点项目最近升级到了.NET 4.0,这也意味着我们需要更新我们的构建服务器使用的wdproj。我尝试了这个,但不幸的是,构建持续失败。
我决定摆脱wdproj并使用更新的发布配置文件。在VS2012中生成这个非常容易。
在构建服务器上,我使用了以下命令:
<MSBuild Projects="<path to publishproj file>" Properties="DeployOnBuild=true;
PublishProfile=name-of-profile; VisualStudioVersion=11.0" />
在PublishProfile中,WebPublishMethod是FileSystem,因此只需要将所有内容复制到一个文件夹中。
问题
网站项目包含6个ProjectReferences,由msbuild构建。生成的文件夹包含这些项目的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。
非常感谢所有的帮助!