如何确保Visual Studio将依赖项的依赖项复制到输出文件夹?

时间:2013-01-31 04:58:41

标签: asp.net visual-studio-2010 msbuild

我正在使用Visual Studio 2010来管理Web应用程序。此Web应用程序组织为多个项目,其中UI本身是一个项目,业务逻辑驻留在另一个程序集中,然后将其设置为UI的项目引用,并调用第三方的代码库。

当我进行部署构建时,MSBuild会创建通常的_PublishedWebsites文件夹并将Web应用程序复制到那里。它没有做的是复制业务层的依​​赖关系,这意味着当我尝试运行应用程序时讨厌的YSOD。现在,我可以将第三方库设置为UI项目的引用,并确保按预期复制和部署库 - 但是,这相当于错过了业务层完成所有工作的重点,并且意味着额外的维护因为当添加另一个第三方库时,需要在多个地方添加它。

在部署构建运行时,如何一劳永逸地确保业务层的依​​赖关系部署到_PublishedWebsites文件夹?

3 个答案:

答案 0 :(得分:1)

根据我对@Shaun Plourde的回复的评论,似乎不支持此方案。如果您希望间接引用的程序集出现在构建输出中,则需要直接引用它们。

答案 1 :(得分:0)

这应该只是VS.NET的开箱即用。尝试将“Copy local”设置为true,实际需要依赖项。您的UI项目不应该要求对这些程序集进行任何显式引用。

对于较小的项目,这在编译性能方面可能会很好。对于大型项目,您可能需要考虑其他方法,例如Patrick Smacchia在http://www.simple-talk.com/dotnet/.net-framework/partitioning-your-code-base-through-.net-assemblies-and-visual-studio-projects/的文章中概述的方法。

答案 2 :(得分:0)

这不是一个完全自动化的解决方案,但您可以使用主项目上的构建后脚本来解决此问题。

我发现管理$(WebProjectOutputDir)变量时,如果提供的输出目录不等于正在构建的项目的目录,它会解析为“_PublishedWebsites”目录。 (否则,它与当前项目目录相同。)因此,对于您的问题,您可以将其放在Web应用程序的后期构建中:

xcopy /Y /S "$(ProjectDir)..\Your Business Logic Project\bin" "$(WebProjectOutputDir)\bin"

它应该可以在您的计算机和构建服务器上运行。

相关问题