我正在使用SlowCheetah转换CI服务器上的Visual Studio Web项目中的XML配置文件。在Visual Studio 2010中,XML将在我发布时进行转换,但在CI服务器上不会发生转换。相反,我只是获得原始的非转换配置文件。我按照Sayed Ibrahim's Blog提供的说明进行了解释,在解决方案中添加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>
MSBuild脚本基本上构建项目并将项目放入“c:\ Builds \ BuildFolder”。当我在构建完成后查看构建文件夹时,我看到了我需要的.config文件,但没有发生任何转换。这是以前的文件。
答案 0 :(得分:1)
使用2.5.10版试用它。我修改了SlowCheetah以将.targets文件添加到项目中。现在不需要额外的配置。有关详情,请访问https://github.com/sayedihashimi/slow-cheetah/issues/113。
答案 1 :(得分:0)
我总是不喜欢那种答案,但我建议您使用Config Transformation Tool。这是使用Xdt转换的另一个工具,但它比猎豹更简单,有点聪明(支持参数)然后是严重的MSBuild任务。它可以只存储在解决方案中,也可以通过NuGet包在CI服务器上自动恢复。你只需要使用params调用实用程序。 我是Xdt的粉丝,因为在制作过程中发现这些工具在我的项目中最容易使用。