使用VS 2012发布配置文件和Teamcity VS构建,我想在部署多次后构建/打包

时间:2014-04-22 00:23:52

标签: visual-studio-2012 msbuild teamcity msdeploy web.config-transform

我使用VS 2012和Teamcity与Visual Studio Runner类型。 我的解决方案针对不同的环境进行了多次web.config转换。 我希望遵循持续交付,使用多个包构建解决方案,并使用工件在需要时将它们部署到相关环境而无需再次构建。 我没有直接使用MSBuild,我使用VS包配置文件(pubxml) 我想有这样的事情:

    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>Package</WebPublishMethod>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <DesktopBuildPackageLocation />
    <PackageAsSingleFile>true</PackageAsSingleFile>
    <DeployIisAppPath/>
    <PublishDatabaseSettings/>
  </PropertyGroup>

  <ItemGroup>
    <LastUsedBuildConfiguration Include="UAT" />
    <LastUsedBuildConfiguration Include="APCI" />
  </ItemGroup> </Project>

然后我希望结果是工件的obj中的两个文件夹,每个文件夹都有自己的转换web.config。 有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

在单个构建中创建多个转换配置的唯一方法是在构建过程中直接使用XDT引擎。现在已经available on NuGet了一段时间,所以不应该太麻烦。

话虽如此,我已经使用msdeploy / publish个人资料大约两年了,之后我又搬到了以下地方:

  1. 使用Package.pubxml创建一个msdeploy包,并使用MSDeploy参数定义所有转换(这两个参数都比XDT更强大)
  2. 创建PublishProfile.pubxml文件(这样您就可以拥有Visual Studio体验),但在PublishProfile.parameters.xml
  3. 中声明所有参数值
  4. Web.Release.config中执行任何“除调试之外的所有环境”转换,以避免过度复杂的部署参数
  5. 通过调用生成的.deploy.cmd(或直接msdeploy.exe
  6. 在您的构建服务器上部署软件包

    此设置允许您继续使用Visual Studio进行发布(如果您愿意),但您也可以一直向下移动到msdeploy命令行,因为.parameters.xml文件是使用msdeploy参数架构定义的。

    Web部署参数有很多“浮动”文档但没有真正的“引用”主页。这是一些有用的链接: