自动慢速猎豹构建方法

Meg*_*ind 9 msbuild build-automation build-process config-transformation slowcheetah

我不想在所有构建服务器上安装Slow Cheetah.

我们正在使用Slow Cheetah进行配置转换,它工作得很好.它会生成多个app.config文件,我们会根据需要对它们进行更改.

我们设置了几台服务器.所有这些都有他们的代码库,他们从命令行中提取代码并相应地构建包.这些代码中包含那些配置文件.但是当我们从命令行编译应用程序时,如果没有安装慢速猎豹,则不会使用转换生成包.否则它工作正常.

我们永远都不知道我们何时设置新服务器和新用户,因此无法在每个服务器上安装慢速猎豹

有可能以某种方式在应用程序中使用慢速猎豹dll并从中手动调用转换方法?

谢谢

Dan*_*zey 10

作为SlowCheetah的替代方案,可以通过手动编辑项目文件来处理此功能.设置起来有点麻烦,但它确实意味着您不需要额外的DLL.

在文本编辑器中打开项目文件.在项目文件的底部,就在结束标记之前,包括以下内容:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile" Condition="exists('app.$(Configuration).config')">
    <!-- Generate transformed app config in the intermediate directory -->
    <TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
    <!-- Force build process to use the transformed configuration file from now on. -->
    <ItemGroup>
        <AppConfigWithTargetPath Remove="app.config" />
        <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
            <TargetPath>$(TargetFileName).config</TargetPath>
        </AppConfigWithTargetPath>
    </ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)

然后,在项目文件中找到该行并将其替换为以下内容:

<ItemGroup>
    <Content Include="App.config" />
    <Content Include="App.Debug.config">
        <DependentUpon>App.config</DependentUpon>
    </Content>
    <Content Include="App.Release.config">
        <DependentUpon>App.config</DependentUpon>
    </Content>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

您需要为添加的每个配置添加额外的内容包含 - 遗憾的是,使用此方法您无法获得简单的"添加转换"上下文菜单.

之后就是在项目目录中创建文件的情况,然后你就可以开始了.它不像SlowCheetah那样光滑,但它确保您的代码可移植.

  • 实际上将Microsoft.Web.Publishing.Tasks.dll作为任务插入意味着您必须在构建服务器上安装Visual Studio.这个Dll只与visual studio一起发布,而不是.NET框架本身.所以你的声明"不需要额外的DLL"是不正确的.注意:据我所知 - slowcheetah是为了解决这个限制而创建的 - 有一个具体的任务来转换configs\XML,但开发人员除了使用Visual Studio外不允许使用它.我怀疑Sayed Ibrahim Hashimi开始慢速,因为他不知道TransformXml任务. (6认同)
  • Web项目和SlowCheetah中的转换基本相同.是的我知道TransformXml,我拥有它:) XDT可以用于任何XML文件,Web项目只是对web.config有特定的支持.使用SlowCheetah,您无需安装Web项目. (3认同)

Dav*_*ych 5

Nuget提供了最新版本的SlowCheetah(2.5.14)。通过nuget添加时,它存储在packages本地解决方案目录的文件夹中(像所有nuget软件包一样),这意味着它现在可以在任何构建服务器上使用。