我正在使用 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 文件,但没有发生任何转换。它与之前的文件相同。