MSBuild将网站项目发布到文件系统不';t从引用的项目复制DLL 上下文

MSBuild将网站项目发布到文件系统不';t从引用的项目复制DLL 上下文,dll,msbuild,web-site-project,publish-profiles,Dll,Msbuild,Web Site Project,Publish Profiles,在VS2012中,我有一个sln文件,下面有几个项目。有些只是代码库,有些是web应用程序。然后我们还有一个网站项目 这个网站项目最近更新为.NET4.0,这也意味着我们需要更新构建服务器使用的wdproj。我试过了,但遗憾的是,构建一直失败。 我决定放弃wdproj,使用更新的发布配置文件。这在VS2012中非常容易生成。 在生成服务器上,我使用了以下命令: <MSBuild Projects="<path to publishproj file>" Pr

在VS2012中,我有一个sln文件,下面有几个项目。有些只是代码库,有些是web应用程序。然后我们还有一个网站项目

这个网站项目最近更新为.NET4.0,这也意味着我们需要更新构建服务器使用的wdproj。我试过了,但遗憾的是,构建一直失败。
我决定放弃wdproj,使用更新的发布配置文件。这在VS2012中非常容易生成。
在生成服务器上,我使用了以下命令:

<MSBuild Projects="<path to publishproj file>" Properties="DeployOnBuild=true; 
    PublishProfile=name-of-profile; VisualStudioVersion=11.0" />

在PublishProfile中,WebPublishMethod是文件系统,所以它只需要将所有内容复制到一个文件夹中

问题 网站项目包含6个ProjectReferences,这些ProjectReferences由msbuild生成。生成的文件夹包含这些项目的dll,但缺少这些项目的所有引用dll,也没有复制附属程序集(子文件夹中已编译的资源文件)。
所以我丢失了几个DLL

有人知道这个问题的解决方案吗

已找到信息 我可以找到几个描述相同行为的帖子,但它们要么没有解决方案,要么没有次优的解决方案。
示例:
类似问题:

我还开始研究msbuild过程,以查看Microsoft.WebSite.Publishing.targets中使用的特定复制代码。在目标“AfterResolveReferences”中,复制被引用项目的DLL,但不复制依赖的DLL

非常感谢您的帮助

成功了

您必须在网站项目中包含项目引用中的所有引用DLL


谢谢你的帮助

在网站项目中包含项目引用中的所有引用dll并不总是一个好主意,尤其是当您使用依赖项注入时:您的web项目只想添加对接口dll/项目的引用,而不是任何具体的实现dll。因为如果你直接添加对一个实现dll/项目的引用,你不能阻止你的开发者在实现dll/项目的具体类上调用一个“新的”,而不是通过接口,这也是你在网站上声明了一个“硬代码”来使用实现