我们只有一个解决方案,其中包含一个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/

10-09 22:07