自动慢猎豹构建方法



我不想在所有构建服务器上安装慢猎豹。

我们正在使用慢猎豹进行配置转换,它工作得很好。它会生成多个 app.config 文件,我们会根据需要对其进行更改。

我们已经设置了几台服务器。他们都有自己的代码存储库,他们从命令行提取代码并相应地构建包。这些代码中包含这些配置文件。但是当我们从命令行编译应用程序时,如果没有安装慢猎豹,则不会通过转换生成包。否则它工作正常。

我们永远不知道何时设置新服务器和新用户,因此不可能在每个服务器上安装慢猎豹

是否可以以某种方式在应用程序中使用慢猎豹 dll 并从中手动调用转换方法?

谢谢

此处定义了详细的分步过程

http://sedodream.com/2011/12/12/SlowCheetahXMLTransformsFromACIServer.aspx

谢谢

作为 SlowCheetah 的替代方案,可以通过手动编辑项目文件来处理此功能。 设置起来有点麻烦,但这确实意味着您不需要额外的 DLL。

在文本编辑器中打开项目文件。 在项目文件的底部,紧挨着结束标记之前,包括以下内容:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)MicrosoftVisualStudiov10.0WebMicrosoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile" Condition="exists('app.$(Configuration).config')">
    <!-- Generate transformed app config in the intermediate directory -->
    <TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
    <!-- Force build process to use the transformed configuration file from now on. -->
    <ItemGroup>
        <AppConfigWithTargetPath Remove="app.config" />
        <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
            <TargetPath>$(TargetFileName).config</TargetPath>
        </AppConfigWithTargetPath>
    </ItemGroup>
</Target>

然后,在项目文件中找到该行并将其替换为以下内容:

<ItemGroup>
    <Content Include="App.config" />
    <Content Include="App.Debug.config">
        <DependentUpon>App.config</DependentUpon>
    </Content>
    <Content Include="App.Release.config">
        <DependentUpon>App.config</DependentUpon>
    </Content>
</ItemGroup>

您需要为添加的每个配置添加额外的内容包含 - 不幸的是,使用此方法,您无法获得直接的"添加转换"上下文菜单。

之后,在

项目目录中创建文件,然后您就可以开始了。 它不像SlowCheetah那样光滑,但它确实保持了代码的可移植性。

最新版本的

SlowCheetah (2.5.14) 可在 Nuget 上使用。通过 nuget 添加时,它存储在本地解决方案目录的 packages 文件夹中(与所有 nuget 包一样),这意味着它现在应该可以在任何开箱即用的构建服务器上工作。

我在应用程序中包含 SlowCheetah,如下所示,以避免将其安装在构建解决方案的服务器上:

  1. 在我的解决方案根目录中,我有一个文件夹工具,其中包含(除其他外)慢猎豹
      myProject/Tools/SlowCheetah
    1. /SlowCheetah.Tasks.dll
    2. myProject/Tools/SlowCheetah/SlowCheetah.Transforms.targets
  2. 在(web-)应用程序项目的.csproj文件中,我有这个:

  <PropertyGroup>
          <SlowCheetahTargets Condition=" '$(SlowCheetahTargets)'=='' ">$(MSBuildProjectDirectory)..ToolsSlowCheetahSlowCheetah.Transforms.targets  </SlowCheetahTargets>
   </PropertyGroup>

而这个:

<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" />

..它似乎可以很好地处理这项工作,即使在从 TeamCity 构建/发布时也是如此。

编辑:

当你将SlowCheetah安装到Visual Studio中时,你会发现%localappdata%MicrosoftMSBuildSlowCheetahv1drive:UsersyourusernameAppDataLocalMicrosoftMSBuildSlowCheetahv1)中提到的两个文件。

最新更新