0

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

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

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

4

3 回答 3

1

根据我对@Shaun Plourde 回复的评论,似乎不支持这种情况。如果您希望间接引用的程序集出现在生成输出中,则需要直接引用它们。

于 2013-05-07T04:57:53.573 回答
0

It isn't a perfectly automated solution, but you can solve this with a post-build script on your main project.

I've found that the $(WebProjectOutputDir) variable is managed such that it resolves to the "_PublishedWebsites" directory when you supply an output directory that is not equal to the directory of the project being built. (Otherwise, it is the same as the current project directory.) So, for your problem, you could put this in the post build of your web application:

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

It should work both on your machine and on your build server.

于 2014-02-13T21:08:24.113 回答
0

这应该在 VS.NET 中开箱即用。尝试在实际需要依赖项的地方将“复制本地”设置为 true。您的 UI 项目不应要求对这些程序集进行任何显式引用。

对于较小的项目,这可能会在编译性能方面很好地扩展。对于较大的项目,您可能需要考虑替代方法,例如 Patrick Smacchia 在http://www.simple-talk.com/dotnet/.net-framework/partitioning-your-code-base-through- 上的文章中概述的方法。网络组装和视觉工作室项目/

于 2013-01-31T05:31:54.003 回答