我试图让我的 Web 应用程序在自动构建结束时自动部署,但我显然遗漏了一些东西。
我的设置是:
VS2012 在 Win7 工作站
TFS2010 存储库上 serverA
TFS 构建代理在 serverB
测试站点在 serverC 上的 IIS7。
我使用默认的 MVC4 模板创建了一个快速测试项目,并使用 MS VS Scrum 1.0 模板创建了一个团队项目来配合它。
我使用发布 Web 对话框为 Web 应用程序创建了一个新的发布配置文件,并且 .pubxml 文件与项目一起签入。.pubxml 文件如下所示:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<SiteUrlToLaunchAfterPublish>TestServer/DeployTest</SiteUrlToLaunchAfterPublish>
<MSDeployServiceURL>http://TestServer</MSDeployServiceURL>
<DeployIisAppPath>webapp-dev/DeployTest</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>False</SkipExtraFilesOnServer>
<MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod>
<UserName>mydomain\myuser</UserName>
<_SavePWD>True</_SavePWD>
<PublishDatabaseSettings>
<Objects xmlns="" />
</PublishDatabaseSettings>
</PropertyGroup>
</Project>
*为了保护无辜者,部分名称已更改 :)
使用此配置文件,我可以成功地将应用程序从 Visual Studio 发布到测试 Web 服务器,而不会出现任何问题。在Scott Hanselman 的博客文章之后,我成功地从我的工作站上的命令行发布:
msbuild DeployTest.csproj /p:DeployOnBuild=true /p:PublishProfile=Test /p:AllowUntrustedCertificate=true /p:Password=notTheRealPassword
然后我在 Team Explorer 中创建了一个构建,它将使用我的构建服务器来编译然后运行单元测试。都好。项目构建,单元测试通过。
然后,我将命令行中的参数添加到构建定义的 Advanced 部分的 MS Build Arguments 中:
/p:DeployOnBuild=true /p:PublishProfile=Test /p:AllowUntrustedCertificate=true /p:Password=notTheRealPassword
构建运行,单元测试通过,没有任何内容发布到 Web 服务器。:(
有人可以告诉我我错过了什么吗?我读过的任何内容似乎都表明我错过了一个步骤,但似乎很少有宝贵的文档来解释这是如何完成的。