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

我正在使用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>DCSIWebDCSIWeb</WebFolder>
    <ReleaseFolder>C:BuildsBuildFolder</ReleaseFolder>
</PropertyGroup>
<PropertyGroup Condition ="$(CCNetWorkingDirectory) == ''">
    <SourceFileRootFolder>C:BuildsProjectWorkingDirectoryCode</SourceFileRootFolder>
    <ReleaseFolder>C:BuildsBuildFolder</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文件,但未发生转换。 这是之前的文件。


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


我总是不喜欢这样的答案,但我建议你使用配置变换工具。 这是使用Xdt转换的另一种工具,但它比Cheetah简单得多,并且有点聪明(支持参数),然后是严重的MSBuild任务。 它可以存储在解决方案中或通过NuGet软件包在CI服务器上自动恢复。 你只需要用params调用实用程序。 我是Xdt的粉丝,因为在制作过程中发现这个工具最容易在我的项目中使用。

链接地址: http://www.djcxy.com/p/62441.html

上一篇: SlowCheetah not producing transformed config file on CI server

下一篇: in ASP.Net MVC into an existing Web Site Project?