我正在尝试让我的Web应用程序在自动构建结束时自动部署,我显然错过了一些东西。
我的设置是:
VS2012在Win7工作站上
服务器A上的TFS2010存储库
服务器B上的TFS构建代理
在serverC上的IIS7中测试站点。
我使用默认的MVC4模板创建了一个快速测试项目,并使用MS VS Scrum 1.0模板创建了一个Team Project来使用它。
我使用发布网页对话框为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
然后我在团队资源管理器中创建了一个构建版,它将使用我的构建服务器进行编译,然后运行单元测试。都好。项目构建,单元测试通过。
然后我将命令行中的参数添加到构建定义的Advanced部分中的MS Build Arguments:
/ p:DeployOnBuild = true / p:PublishProfile = Test / p:AllowUntrustedCertificate = true / p:Password = notTheRealPassword
构建运行,单元测试通过,没有任何内容发布到Web服务器。 :(
有人可以告诉我我错过了什么吗?我读过的任何内容似乎都没有表明我错过了一个步骤,但是有一些看似很珍贵的文档来解释这是如何完成的。
答案 0 :(得分:1)
答案 1 :(得分:0)
我知道这是一个老问题,但今天我遇到了同样的问题,我想我知道你观察到的行为的原因。让我总结一下这个问题:
我认为这背后的原因是因为您的工作站上有VS 2012,它支持使用配置文件功能发布。因此,当您在工作站上从命令提示符运行MS build时,将发布该站点。但是,TFS 2010上没有对发布配置文件的支持,因此对于构建服务器,该站点未发布。
我今天遇到了同样的问题,我确实跟着解决了这个问题:
我知道在TFS机器上安装Visual Studio不是一个理想的解决方案,但至少它解决了我的问题。 我也不确定为什么安装带有发布配置文件支持的VS 2010解决了这个问题。但是,在安装之后,似乎在TFS机器上部署了一些缺少的组件/ dll,从而解决了这个问题。 希望这可以解决您的部署问题。
[更新]:上述行为可能还有其他原因。检查构建活动的日志消息。如果您发现类似于此的警告: C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(484,9):警告:未为项目ProjectName.csproj'设置OutputPath属性。请检查以确保您为此项目指定了Configuration和Platform的有效组合。 Configuration ='Release'Blatform ='Any CPU'
然后它可能与构建配置有关。如果您使用“任何CPU”作为构建配置,则将其更改为“AnyCPU”(删除空格)。有关详细说明,请参阅以下链接:
Amey