微小的开心功能第 3部分-发布的改善,链式配置转换和从命令行部署 ASP.NET 应用程序

[原文发表地址]  Tiny Happy Features #3 - Publishing Improvements, chained Config Transforms and Deploying ASP.NET Apps from the Command Line

[原文发表时间] 2012-08-12 20:07

很快就会有很多人开始编写有关 Visual Studio 2012的史诗般的博客文章。它们将包括大量的截图 (一些好的和一些差的),一些小的代码示例和极少的文本。我不能代表其他的团队 ;我只能讨论我们所做的工作。Azure 平台和工具(ASP.NET,IIS,WCF、 EF、Azure和更多)中的尖括号(我对网络平台和工具团队的称呼)家伙们已投入了大量的工作到我有时称之为"一千个微小伤亡"中。小小的眼中钉会如同大的缺失的功能一样(或更加)令人沮丧。

Publish Profiles are stored with the project我不想长篇大论(虽然我有时会这样做),我会展示团队致力于的微小的开心功能, 而正是这些微小的功能使生活变得更加美好。有些是大功能的,有些是小的,但它们都是微小的开心功能。

发布和部署改进

Visual Studio 2012 有大量针对发布的微妙但重大的改进。当然,你可能知道你可以使用 Git将代码推送到AzureAppHarbor中。你可以使用Web 部署发布您的 web 应用程序,这一点,我在我的谈话中Web 部署的惊人功能: 如果你正在使用 XCopy,那你就做错了演示了此。你可以观看我做的 Web 部署到Azure 的4 分钟视频

前阵子Visual Studio 添加了 web.config 转换,所以你会拥有一个Web.config ,一个记录了调试时间段的变更的Web.debug.config,一个记录了发布时间段的变更的web.release.config。你可以添加免费的SlowCheetah加载项,并为你的所有配置文件获取转换支持,而不仅仅只是 web.config

然而,事情失败了,因为 Web 部署和 Visual Studio没有一种方式来简单地展示开发、 测试、 阶段、产品。 无论如何你也可以生成配置,但它们与部署无关,这没有反映开发人员的真实情况。

发布具有特定环境的配置

发布配置文件可由手动创建,或者现在在 VS2012中从您的主机中作为.publishsettings 下载,然后导入到 Visual Studio 中。在 Visual Studio 2012 中,发布配置文件是与您的代码一起存储在您的属性文件夹中,所以它们是可以签入的和可由他人使用的。

Visual Studio 2012 adds deployment config transforms

你可以根据你的喜好随意更改名称来重命名配置文件。在这里我将我的发布配置文件命名为" Production "。这里是最酷的部分。

PublishProfiles live in the Properties folder

我可以制作一个Web.config 文件,并让它与我的发布配置文件同名,在生成转换之后 , 将运行该转换。

更好的事情是现在可以右击一个转换,选择Preview Transform(预览转换),这看到的不仅仅只是结果,而且还有结果的比较。

Transformed Web.config ( transforms applied: Web.Release.config, Web.Production.config)

看到上面的大图像了吗?它显示," Transformed Web.config (transforms applied: Web.Release.config,Web.Production.config)。"首先进行生成转换,然后是发布变换。现在你自己需要创建具有相同名称的文件,但我们将为此添加工具。

这意味着我可以在Web.debug.config中做像更改编译选项的操作,而Web.production.config则用于更改连接字符串、 设置日志级别,以及添加特定的产品设置。

从命令行部署

从命令行部署 web 应用程序已经很长时间可行了,但它一直是一件非常模糊和令人沮丧的事情。既然发布配置文件可以与项目放在一起, Web.config 转换可以相链接,那么从命令行发布要简单得多。

msbuild MySolution.sln /p:DeployOnBuild=true;PublishProfile=Production;Password=poo

如果你在部署服务器上有一个不受信任的证书,而且你没有将它添加到您本地的证书中,那么你需要添加 AllowUntrustedCertificate = true来作为认可。

我只是做了一个Deploy.bat,它看起来拥有配置文件名称的一个%1。

msbuild MySolution.sln /p:DeployOnBuild=true;PublishProfile=%1;AllowUntrustedCertificate=true;Password=poo

然后我可以做

Deploy Production

Deploy Staging

我发现这些外表看起来微小但影响重大的更改让部署站点变得更简单了。部署不应该是困难的。我坚持我最初的声明: 如果你正在使用 XCopy (或 Windows Explorer或FileZilla) 来部署你的网站,那你就做错了。

如果你正在使用Web 站点,而不是 Web 产品,请前往(也请订阅) Web 团队博客,并将您的想法添加到我们团队的有关Website项目和 Web 部署项目的计划的评论中吧。