【发布时间】:2012-10-05 13:55:50
【问题描述】:
我正在尝试让我的 Web 应用程序在自动构建结束时自动部署,但我显然遗漏了一些东西。
我的设置是:
Win7 工作站上的 VS2012
服务器 A 上的 TFS2010 存储库
服务器 B 上的 TFS 构建代理
在服务器 C 上的 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's blog post之后,我在我的工作站上通过命令行成功发布了:
msbuild DeployTest.csproj /p:DeployOnBuild=true /p:PublishProfile=Test /p:AllowUntrustedCertificate=true /p:Password=notTheRealPassword
然后我在 Team Explorer 中创建了一个构建,它将使用我的构建服务器进行编译,然后运行单元测试。都好。项目构建,单元测试通过。
然后,我将命令行中的参数添加到构建定义高级部分的 MS 构建参数中:
/p:DeployOnBuild=true /p:PublishProfile=Test /p:AllowUntrustedCertificate=true /p:Password=notTheRealPassword
构建运行,单元测试通过,没有任何内容发布到 Web 服务器。 :(
有人可以告诉我我错过了什么吗?我读过的任何内容似乎都表明我错过了一个步骤,但似乎很少有宝贵的文档可以解释这是如何完成的。
【问题讨论】:
-
我相信,这两个部署方案之间的唯一区别是部署的发起者。我会检查你的权限。
-
构建服务在我已添加到 Web 服务器上的管理员组的域帐户下运行。这是我在命令行测试和VS发布中成功使用的相同帐户。
标签: msbuild visual-studio-2012