我们只有一个解决方案,其中包含一个webapp项目和一些随附项目。我们的TFS 2010每晚都在构建此解决方案,并将Webapp部署到IIS服务器。它像微风一样运转。
在TFS构建定义的“处理”选项卡中,您可以指定“ MSBuild参数”。这是在我们的构建定义中设置的值(全部在一行中):
/p:DeployOnBuild=True
/p:DeployTarget=MsDeployPublish
/p:CreatePackageOnPublish=True
/p:MSDeployPublishMethod=WMSVC
/p:MSDeployServiceUrl=<service url of IIS>
/p:DeployIisAppPath="<a website>"
/p:UserName=<domain>\<user
/p:Password=<password>
这篇博客文章解释了整个设置:
http://vishaljoshi.blogspot.com/2010/11/team-build-web-deployment-web-deploy-vs.html。
到目前为止,一切都很好。
现在,我们添加了第二个webapp项目,我们希望每天晚上也将其部署到同一IIS。不幸的是,在这种情况下,该设置不适用。 TFS仅部署一个Web应用程序。
还有其他人有相同的问题:
TFS 2010 + MSDeploy when solution has multiple web applications
和
WebDeploy to deploy multiple web sites
Vishal R. Joshi建议为每个webapp项目添加一些属性。现在,发行版本将为每个定义了以下属性的webapp项目生成webpackage(zip文件):
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DeployOnBuild>True</DeployOnBuild>
<DeployTarget>Package</DeployTarget>
<CreatePackageOnPublish>true</CreatePackageOnPublish>
</PropertyGroup>
好。但是,如何利用TFS将每个Web应用程序部署到IIS?还有其他想法吗?
最佳答案
正如Vishal在您链接到自己的博客文章中所描述的那样,所有MSBuild参数都可以在csproj内部移动。这意味着每个项目可以有自己的设置。
我有一个包含6个项目,4个类库和2个Web(WCF和MVC应用程序)的解决方案。我遵循了Vishal博客中的指令,并简单地将所有MSBuild参数转移到每个csproj文件中。
<PropertyGroup>
<DeployOnBuild>True</DeployOnBuild>
<DeployTarget>MsDeployPublish</DeployTarget>
<CreatePackageOnPublish>True</CreatePackageOnPublish>
<MSDeployPublishMethod>InProc</MSDeployPublishMethod>
<MSDeployServiceUrl>localhost</MSDeployServiceUrl>
<DeployIisAppPath>Dev.Auzzy\Web</DeployIisAppPath>
<UserName>Username</UserName>
<Password>Password</Password>
...
确保然后从构建定义中删除参数。
然后,TFS按预期方式进行部署。每个项目到指定为每个IIS站点的主目录的正确文件夹中。
同样值得注意的是,您不能如上所述在PropertyGroup中包括DeployIisAppPath,而是使用项目的属性页为每个构建配置指定此属性。 (右键单击每个项目>属性>打包/发布Web)。
关于visual-studio-2010 - 如何告诉TFS部署一个解决方案中包含的多个Web应用程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6457108/