从一个c#解决方案中持续部署多个项目

本文关键字:部署 项目 一个 解决方案 | 更新日期: 2023-09-27 18:09:43

我有一个解决方案,里面有多个项目:

Project1 -类库项目2 - MVCProject3 -类库Project4 - WCF

我现在希望TFS构建所有项目,但也自动部署MVC项目到http://somehost/MVCWCF为http://somehost/WCF

我试图改变我的构建定义,但它只是得到部署的MVC。

顺便说一下:在TFS上启用了Gated Check-in。

从一个c#解决方案中持续部署多个项目

我遇到了这个问题,我通过手动编辑项目文件解决了这个问题。

这样TFS将在构建时部署两个项目。注意构建配置名称——我特别为我的TFS构建定义创建了这些名称(我有两个构建定义:Dev &;QA)。将属性组应用于这些定义意味着,在运行调试配置时,不会每次在开发环境中构建项目时都部署项目。这也意味着我可以部署到不同的位置,这取决于我是运行QA还是Dev构建。

的例子:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'DEV-BUILD-|AnyCPU'">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin'</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <DeployOnBuild>true</DeployOnBuild>
    <DeployTarget>MsDeployPublish</DeployTarget>
    <MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod>
    <MSDeployServiceUrl>http://DEV-SERVER-ADDRESS</MSDeployServiceUrl>
    <DeployIisAppPath>PROJECTminder.API-MAINTENANCE</DeployIisAppPath>
    <UserName><MACHINE-NAME>'BuildUser</UserName>
    <Password>*****</Password>
    <AuthType>Basic</AuthType>
    <AllowUntrustedCertificate>true</AllowUntrustedCertificate>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'QA-BUILD|AnyCPU'">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin'</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <DeployOnBuild>true</DeployOnBuild>
    <DeployTarget>MsDeployPublish</DeployTarget>
    <MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod>
    <MSDeployServiceUrl>http://QA-SERVER-ADDRESS</MSDeployServiceUrl>
    <DeployIisAppPath>PROJECTminder.API</DeployIisAppPath>
    <UserName><MACHINE-NAME>'BuildUser</UserName>
    <Password>*****</Password>
    <AuthType>Basic</AuthType>
    <AllowUntrustedCertificate>true</AllowUntrustedCertificate>
  </PropertyGroup>

更新:

我应该补充说,这是我的解决方案VS2010。我相信在较新的版本(2012+)中,您实际上可以定义每个项目的发布配置文件(.pubxml), TFS将拾取。

我使用了Octopus Deploy。使用默认的构建过程模板,您可以触发一个Post-build Powershell脚本。在这个脚本中,您可以创建NuGet包,创建一个发布并将它们部署到许多服务器上。在Octopus Deploy文档中有一种创建包的方法,可以使用TFS来部署create packages。这里有一篇关于TFS和Octopus Deploy集成的博文