5

我有一个包含几个项目的解决方案,其中 3 个是基于 Web 的(IIS / MVC 站点中的 WCF)。当解决方案构建时,它将这个分布式系统的每个组件转储到“构建”文件夹中。运行整个输出的“配置器”部分将自动在云中设置系统。它非常整洁 :) 然而,Web 部署项目是一个主要的痛苦。他们“构建”(即部署)每次我构建时 - 即使没有对他们各自的项目进行任何更改。

改变了一行代码?期待等待大约一分钟以重新部署 3 个 Web 项目。

[这些项目目前非常简单 - 两个有一个 .svc 和一个 .ashx 文件 - 另一个是一个有大约 5 个视图的 MVC 应用程序]

我意识到我可以将解决方案配置更改为不“构建”它们,但我一直在这样做,而且很容易在第二天登录并忘记它,并花费几个小时追踪分布式系统中的错误根本没有建造的东西。

为什么我使用 Web 部署项目?好吧,因为我需要来自 web 项目的所有页面 + 二进制文件。项目本身的构建输出是“bin”文件夹,因此没有页面。整个项目文件夹?它有 .cs、.csproj 和其他我不想包含的文件。

这最终将建立在构建服务器上,但目前它是本地的。但我想要一种将实际输出文件从 Web 项目获取到我的目标文件夹的快速方法。有任何想法吗?

4

4 回答 4

2

不确定这是否对您的情况有所帮助(插入自己的项目),但我正在开发一个项目以帮助简化 IIS 部署:

https://github.com/twistedtwig/AutomatedDeployments

这个想法是您可以使用 IIS(应用程序池、应用程序和网站)的配置文件来自动在本地(开发机器)或远程(测试和生产机器)创建和更新站点。

它仍在进行中,但已准备好在生产系统中使用。

使用包创建作为后期构建步骤可能会让你更接近你想要的,(不要相信它包含所有额外的文件),但是每次仍然会构建它,(尽管如果代码没有改变它应该除非您选择重建所有项目,否则不要重建)。

于 2012-07-25T08:55:33.747 回答
2

最后,我创建了一个实用程序/工具,给定一个项目文件,XCOPY 将 Web 项目的项目文件夹复制到目标位置,然后查看所述项目文件并删除没有将 Build Action 设置为 Content 的任何内容。非常快速有效。

于 2012-11-30T23:37:04.923 回答
1

我知道它仍在 RC 中,但 VS2012 在发布时确实有一个简洁的功能,它可以检测到更改并仅发布这些更改。可能在构建中更深入一些,它也会自动发布。

于 2012-07-25T08:27:41.097 回答
0

您可以查看 Octopus 项目:http : //octopusdeploy.com/ 基于 nuget 包的部署。

于 2012-07-25T09:03:15.667 回答