0

我们有一个网站项目的解决方案,该项目托管在负载平衡的环境中。目前没有使用 CI,部署是手动使用 zip 文件 >_< 但是我正在寻找设置它,并且遇到了一些困难。该解决方案需要一个 App_Config 文件夹,其中包含根中站点的所有配置,但是这些配置与每个托管服务器不同,其中一个是管理服务器,另一个是交付服务器。

每个单独的服务器配置都存储在 /Configs/servername/ 的单独文件夹中,其中包含 web.config 文件和 App_Config 文件夹。这些已手动从该文件夹复制到根目录以覆盖已存在的那些。也不需要部署 /Configs/ 文件夹。

最好不要对 Visual Studio 解决方案进行任何更改。

在 TeamCity 中部署之前是否可以自动执行此操作?

问候

4

1 回答 1

0

您可能希望根据计算机名称设置具有不同值的属性。这是交易的一个技巧。

<Choose>
    <When Condition=" '$(Computername)'=='MyManagementServer01' ">               
        <PropertyGroup>
            <MyCustomProperty001>Red</MyCustomProperty001>
            <MyCustomProperty002>Yellow</MyCustomProperty002>
        </PropertyGroup>
    </When>

    <When Condition=" '$(Computername)'=='MyDeliveryServer01' ">

        <PropertyGroup>
            <MyCustomProperty001>Black</MyCustomProperty001>
            <MyCustomProperty002>White</MyCustomProperty002>
        </PropertyGroup>

    </When>

    <Otherwise>

        <PropertyGroup>
            <MyCustomProperty001>NoMatchMyCustomProperty001</MyCustomProperty001>
            <MyCustomProperty002>NoMatchMyCustomProperty002</MyCustomProperty002>
        </PropertyGroup>        

    </Otherwise>

</Choose>

您可以设置一个名为

<ConfigurationSourceFolder>/Configs/MyManagementServer01/</ConfigurationSourceFolder>

或者设置一个“DeploymentType”

<DeploymentType>ManagementServerType</DeploymentType>

您还可以将条件放在“目标”甚至任务上。

<MakeDir Directories="C:\MyCoolDirectory" Condition="('$(MyCustomProperty001)'!='')"/>

//////最好不要对 Visual Studio 解决方案进行任何更改。//////

所以这是一个“一般”的提示。而不是在 csproj 文件中放置大量有时难以遵循的自定义更改......使用基本的 .msbuild 文件。

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="AllTargetsWrapped">
    <PropertyGroup>
        <!-- Always declare some kind of "base directory" and then work off of that in the majority of cases  -->
        <WorkingCheckout>.</WorkingCheckout>
    </PropertyGroup>

    <Target Name="AllTargetsWrapped">

        <CallTarget Targets="BuildItUp" />

    </Target>


    <Target Name="BuildItUp" >
        <MSBuild Projects="$(WorkingCheckout)\MySolution.sln" Targets="Build" Properties="Configuration=$(Configuration)">
            <Output TaskParameter="TargetOutputs" ItemName="TargetOutputsItemName"/>
        </MSBuild>
        <Message Text="BuildItUp completed" />
    </Target>

</Project>
于 2013-10-01T13:43:06.957 回答