如何使用 TeamCity 模拟 VisualStudio 发布 Web 功能

How to use TeamCity to emulate VisualStudio Publish Web feature

Visual Studio (VS) 提供了一个 'Publish Web' 功能,您可以从中 select 一个配置文件并生成构建 artfects - 这按预期工作,我的 Web.config从配置文件转换而来(比如 web.Test.config)。

如果我使用 /p:Configuration="Test" 通过 teamcity 构建,构建很好,但我没有看到任何转换 - 我的期望是好的。我确实设置了 octoPack 运行。

我确实有其他 VS 项目,我使用 team city 构建 nuget 包,然后通过 Octopus 部署到各种环境。 Octopus 在哪里进行转换。我想我混淆了我对 teamcity 的期望,即它不是 VS 的 Publish-Web 的模拟。即使我不使用 octopus 部署到环境中,我也必须使用 teamcity + octopus 这两个步骤来构建输出可交付成果。

要使其正常工作,您必须在发布配置文件 *.pubxml 中进行配置。然后,在 TeamCity 中,您应该将此文件用作构建步骤。这是一个示例,假设您在 DebugRelease 旁边有 Test 配置 Visual Studio:

Test.pubxml

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <WebPublishMethod>MSDeploy</WebPublishMethod>
        <AllowUntrustedCertificate>True</AllowUntrustedCertificate>
        <Configuration>Test</Configuration>
        <LastUsedBuildConfiguration>Test</LastUsedBuildConfiguration>
        <LastUsedPlatform>Any CPU</LastUsedPlatform>
        <SiteUrlToLaunchAfterPublish>http://your-website:8080/</SiteUrlToLaunchAfterPublish>
        <LaunchSiteAfterPublish>False</LaunchSiteAfterPublish>
        <ExcludeApp_Data>False</ExcludeApp_Data>
        <MSDeployServiceURL>server-name</MSDeployServiceURL>
        <DeployIisAppPath>SITE_NAME_ON_IIS</DeployIisAppPath>
        <RemoteSitePhysicalPath />
        <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
        <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
        <EnableMSDeployBackup>False</EnableMSDeployBackup>
        <UserName>UserNameWithPermission</UserName>
        <_SavePWD>True</_SavePWD>
    </PropertyGroup>
</Project>

命令行参数:

/p:DeployOnBuild=true
/p:PublishProfile="%teamcity.build.workingDir%\PathToConfiguration\Test.pubxml"
/p:SolutionDir="%teamcity.build.workingDir%"
/p:Password=PASSWORD

构建文件路径应该是您的 *.csproj 文件:

TeamCity Configuration