5

我正在使用 SlowCheetah 在 CI 服务器上的 Visual Studio Web 项目中转换 XML 配置文件。在 Visual Studio 2010 中,当我发布时 XML 会很好地转换,但在 CI 服务器上不会发生转换。相反,我只得到原始的未转换的配置文件。我按照Sayed Ibrahim 的博客提供的说明进行操作,他解释了在解决方案中添加 SlowCheetah dll 和目标文件,并指向项目文件以使用这些文件。我进行了此更改并在 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>

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

4

2 回答 2

1

尝试使用 2.5.10 版本。我已经修改了 SlowCheetah 以将 .targets 文件添加到项目中。现在不需要额外的配置。更多信息请访问https://github.com/sayedihashimi/slow-cheetah/issues/113

于 2013-10-20T22:42:12.533 回答
0

我总是不喜欢那种答案,但我建议您使用Config Transformation Tool。它是另一个使用 Xdt 转换的工具,但它比 Cheetah 简单得多,而且有点聪明(支持参数)然后是严肃的 MSBuild 任务。它可以直接存储在解决方案中,也可以通过 NuGet 包在 CI 服务器上自动恢复。您只需要使用参数调用实用程序。我是 Xdt 的粉丝,因为 in 被制作出来并发现这个工具在我的项目中最容易使用。

于 2012-11-23T15:14:47.957 回答