SlowCheetah不在CI服务器上生成转换的配置文件

Sco*_*sen 5 asp.net msbuild slowcheetah

我正在使用SlowCheetah转换CI服务器上的Visual Studio Web项目中的XML配置文件.在Visual Studio 2010中,XML将在我发布时进行转换,但在CI服务器上不会发生转换.相反,我只是获得原始的非转换配置文件.我按照Sayed Ibrahim博客提供的说明进行了解释,他解释了在解决方案中添加SlowCheetah dll和targets文件并指向项目文件以使用这些文件.我做了这个改变,并在Visual Studio中发布了一个只是为了确保它有效并且确实有效.但是当我在CI服务器上构建项目时,我遇到了与以前相同的问题.

我的假设是它与我用于在CI服务器上构建项目的MSBuild脚本有关.我是否需要添加一些东西来告诉我的项目使用SlowCheetah?我的构建脚本如下:

<Project DefaultTargets="DoPublish"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
    <SourceFileRootFolder>$(CCNetWorkingDirectory)\Code</SourceFileRootFolder>
    <WebFolder>DCSIWeb\DCSIWeb</WebFolder>
    <ReleaseFolder>C:\Builds\BuildFolder</ReleaseFolder>
</PropertyGroup>
<PropertyGroup Condition ="$(CCNetWorkingDirectory) == ''">
    <SourceFileRootFolder>C:\Builds\ProjectWorkingDirectory\Code</SourceFileRootFolder>
    <ReleaseFolder>C:\Builds\BuildFolder</ReleaseFolder>
</PropertyGroup>
<Target Name="CleanSource">
    <Message Text="Removing all source files from $(ReleaseFolder)" />
    <RemoveDir Directories="$(ReleaseFolder)" />
</Target>
<Target Name="DoPublish">
    <CallTarget Targets="CleanSource"/>
    <MSBuild Projects="$(SourceFileRootFolder)\DCSIWeb.sln" Targets="Clean;Build" />
    <MSBuild Projects="$(SourceFileRootFolder)\$(WebFolder)\DCSIWeb.csproj"
        Targets="_CopyWebApplication;_BuiltWebOutputGroupOutput;TransformWebConfig"
        Properties="OutDir=$(ReleaseFolder)\" ></MSBuild>
</Target>
Run Code Online (Sandbox Code Playgroud)

MSBuild脚本基本上构建项目并将项目放入"c:\ Builds\BuildFolder".当我在构建完成后查看构建文件夹时,我看到了我需要的.config文件,但没有发生任何转换.这是以前的文件.

Den*_*rev 0

我总是不喜欢这种答案,但我建议您使用Config Transformation Tool。它是另一个使用 Xdt 转换的工具,但它比 Cheetah 简单得多,而且比严肃的 MSBuild Task 更聪明(支持参数)。它可以仅存储在解决方案中,也可以通过 NuGet 包自动恢复到 CI 服务器上。您只需要使用参数调用实用程序即可。自从 Xdt 诞生以来,我就是 Xdt 的粉丝,并且发现这个工具在我的项目中最容易使用。