使用 Visual Studio ASP.NET Web 部署:命令行部署
作者:Tom Dykstra
本教程系列介绍如何使用 Visual Studio 2012 或 Visual Studio 2010 将 ASP.NET Web 应用程序部署到Azure App 服务 Web 应用或第三方托管提供程序。 有关该系列的信息,请参阅 该系列中的第一个教程。
概述
本教程演示如何从命令行调用 Visual Studio Web 发布管道。 这对于想要 自动执行部署过程 (而不是在 Visual Studio 中手动执行)的方案非常有用,通常使用 源代码版本控制系统。
进行更改以部署
当前,“关于”页显示模板代码。
你将将其替换为显示学生注册摘要的代码。
打开About.aspx页,删除元素中的所有MainContent
Content
标记,并在其位置插入以下标记:
<h2>Student Body Statistics</h2>
<asp:ObjectDataSource ID="StudentStatisticsObjectDataSource" runat="server" TypeName="ContosoUniversity.BLL.SchoolBL"
SelectMethod="GetStudentStatistics" DataObjectTypeName="ContosoUniversity.DAL.EnrollmentDateGroup">
</asp:ObjectDataSource>
<asp:GridView ID="StudentStatisticsGridView" runat="server" AutoGenerateColumns="False"
DataSourceID="StudentStatisticsObjectDataSource">
<Columns>
<asp:BoundField DataField="EnrollmentDate" DataFormatString="{0:d}" HeaderText="Date of Enrollment"
ReadOnly="True" SortExpression="EnrollmentDate" />
<asp:BoundField DataField="StudentCount" HeaderText="Students" ReadOnly="True"
SortExpression="StudentCount" />
</Columns>
</asp:GridView>
运行项目并选择“ 关于 ”页。
使用命令行部署到测试
不会部署另一个数据库更改,因此请为 aspnet-ContosoUniversity 数据库禁用 dbDacFx 数据库部署。 打开发布 Web 向导,在三个发布配置文件中,清除“设置”选项卡上的“更新数据库”复选框。
在 Windows 8“开始”页中,搜索 VS2012 的开发人员命令提示符。
右键单击 VS2012 开发人员命令提示符的图标,然后单击“以管理员身份运行”。
在命令提示符处输入以下命令,将解决方案文件的路径替换为解决方案文件的路径:
msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Test
MSBuild 生成解决方案并将其部署到测试环境。
打开浏览器并转到 http://localhost/ContosoUniversity
,然后单击“ 关于 ”页以验证部署是否成功。
如果你尚未在测试中创建任何学生,你将在学生正文统计信息标题下看到一个空页面。 转到 “学生 ”页,单击“ 添加学生”,然后添加一些学生,然后返回到“ 关于 ”页以查看学生统计信息。
键命令行选项
输入的命令将解决方案文件路径和两个属性传递给 MSBuild:
msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true
/p:PublishProfile=Test
部署解决方案与部署单个项目
指定解决方案文件会导致生成解决方案中的所有项目。 如果解决方案中有多个 Web 项目,则应用以下 MSBuild 行为:
- 在命令行上指定的属性将传递给每个项目。 因此,每个 Web 项目都必须具有一个具有指定名称的发布配置文件。 如果指定
/p:PublishProfile=Test
,每个 Web 项目必须具有名为 Test 的发布配置文件。 - 当另一个项目甚至无法生成时,可能会成功发布一个项目。 有关详细信息,请参阅 stackoverflow 线程 MSBuild 失败并包含两个包。
如果指定单个项目而不是解决方案,则必须添加一个指定 Visual Studio 版本的参数。 如果使用 Visual Studio 2012,命令行将类似于以下示例:
msbuild C:\ContosoUniversity\ContosoUniversity\ContosoUniversity.csproj /p:DeployOnBuild=true /p:PublishProfile=Test /p:VisualStudioVersion=11.0
Visual Studio 2010 的版本号为 10.0。 有关详细信息,请参阅 Sayed Hashimi 博客上的 Visual Studio 项目兼容性和 VisualStudioVersion 。
指定发布配置文件
可以按名称或 .pubxml 文件的完整路径指定发布配置文件,如以下示例所示:
msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=C:\ContosoUniversity\ContosoUniversity\Properties\PublishProfiles\Test.pubxml
命令行发布支持的 Web 发布方法
命令行发布支持三种发布方法:
MSDeploy
- 使用 Web 部署进行发布。Package
- 通过创建 Web 部署包进行发布。 必须独立于创建包的 MSBuild 命令安装该包。FileSystem
- 通过将文件复制到指定文件夹进行发布。
指定生成配置和平台
必须在 Visual Studio 或命令行中设置生成配置和平台。 发布配置文件包括命名 LastUsedBuildConfiguration
属性, LastUsedPlatform
但无法设置这些属性以确定项目的生成方式。 有关详细信息,请参阅 MSBuild:如何在 Sayed Hashimi 的博客上设置配置属性 。
总结
现已使用命令行部署应用程序更新。
在下一教程中,你将看到有关如何扩展 Web 发布管道的示例。 此示例将演示如何部署项目中未包含的文件。