9

すべてのビルドサーバーにSlowCheetahをインストールしたくありません。

構成変換にSlowCheetahを使用しており、完全に正常に機能しています。複数のapp.configファイルを生成し、必要に応じてそれらに変更を加えます。

いくつかのサーバーをセットアップしました。それらすべてにコードリポジトリがあり、コマンドラインからコードをプルしてそれに応じてパッケージをビルドします。これらのコードには、これらの構成ファイルが含まれています。ただし、コマンドラインからアプリケーションをコンパイルする場合でも、低速のチーターがインストールされていない場合、変換を使用してパッケージは生成されません。それ以外の場合は正常に動作します。

新しいサーバーと新しいユーザーをいつセットアップするかわからないため、それらすべてにSlowcheetahをインストールすることはできません。

どういうわけか、アプリケーションで遅いcheetah dllを使用し、そこから手動でtransformメソッドを呼び出すことは可能ですか?

ありがとう

4

4 に答える 4

18

ここで定義された詳細なステップバイステップのプロセス

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

ありがとう

于 2012-10-01T11:04:42.737 に答える
10

SlowCheetahの代わりに、プロジェクトファイルを手動で編集することでこの機能を処理することができます。設定は少し面倒ですが、追加のDLLが必要ないことを意味します。

プロジェクトファイルをテキストエディタで開きます。プロジェクトファイルの下部、終了タグの直前に、次の情報を含めます。

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.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ほど洗練されていませんが、コードの移植性は維持されます。

于 2012-10-01T10:49:21.377 に答える
5

SlowCheetahの最新バージョン(2.5.14)は、Nugetで入手できます。nugetを介して追加する場合packages、ローカルソリューションディレクトリ(すべてのnugetパッケージと同様)のフォルダーに保存されます。つまり、すぐに使用できるビルドサーバーで機能するはずです。

于 2014-11-07T22:42:07.957 に答える
4

ソリューションを構築するサーバーにSlowCheetahがインストールされないように、次のようなアプリケーションにSlowCheetahを含めます。

  1. 私のソリューションルートには、(とりわけ)SlowCheetahを含むToolsフォルダーがあります。
    1. myProject / Tools / SlowCheetah / SlowCheetah.Tasks.dll
    2. myProject / Tools / SlowCheetah / SlowCheetah.Transforms.targets
  2. (web-)アプリケーションプロジェクトの.csproj-fileには、次のものがあります。

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

この:

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

..そして、TeamCityからビルド/公開する場合でも、非常にうまく処理できるようです。

編集:

SlowCheetahをVisualStudioにインストールすると、 %localappdata%\Microsoft\MSBuild\SlowCheetah\v1( )に記載されている2つのファイルが見つかります。drive:\Users\yourusername\AppData\Local\Microsoft\MSBuild\SlowCheetah\v1

于 2012-10-01T10:35:45.717 に答える