SlowCheetahを使用しようとしているプロジェクトがあります。構成ファイル(Test.web.config)を作成し、ビルド構成で使用するすべての変換(Debug_Mock.config、Debug_SQL.config、Release)を作成しました。ビルド後のイベントでは、変換されたファイルをコピーすることになっています。別のディレクトリにありますが、ファイルが見つかりません
(エラーxcopyはコード4で終了しました)
SlowCheetahは、ファイルを変換して出力ディレクトリ(binフォルダー)に配置していないようです。なぜそれが起こっていないのか、おそらくどこかの設定について誰かが何か考えを持っていますか?
参考:このプロセスは、同じプロジェクトの別のマシンで機能します。私の知る限り、同じ設定です。しかし、私は正しい場所を見ていません。
ビルドの詳細度(Tools -> Options -> Projects and Solutions -> Build and Run
)を有効にして、機能しているバージョンと機能していないバージョンの違いを確認します。
私の知る限り、slow-Cheetahはapp.config
ファイルの構成変換をサポートしていますが、現在のデバッグではweb.configs
はサポートしていません。変換されたweb.config
ファイルをプロジェクトのbin
フォルダーに配置する必要がありますが、プロジェクトは引き続きルートフォルダーのconfig file
から読み取ります。 http://sedodream.com/CommentView,guid,68b7e248-b9f5-4d07-bdfe-eb037bcf2cbb.aspx でビルド前/後のイベントを確認してください。
デバッグ時にWeb構成変換のサポートを要求できます
https://github.com/sayedihashimi/slow-cheetah/issues/39
スローチーターを再インストールしてみてください。
私にとっての問題は、設定ファイルの遅いチータープロパティグループが、存在するかどうかを確認するセクションの下にあることでした。
したがって、修正は、プロパティグループをその行の上に移動するだけで、変換が期待どおりに実行されるようにすることでした。
これを入れてください:
<PropertyGroup Label="SlowCheetah">
<SlowCheetahToolsPath>$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\..\packages\SlowCheetah.2.5.10.3\tools\))</SlowCheetahToolsPath>
<SlowCheetah_EnableImportFromNuGet Condition=" '$(SC_EnableImportFromNuGet)'=='' ">true</SlowCheetah_EnableImportFromNuGet>
<SlowCheetah_NuGetImportPath Condition=" '$(SlowCheetah_NuGetImportPath)'=='' ">$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\Properties\SlowCheetah\SlowCheetah.Transforms.targets ))</SlowCheetah_NuGetImportPath>
<SlowCheetahTargets Condition=" '$(SlowCheetah_EnableImportFromNuGet)'=='true' and Exists('$(SlowCheetah_NuGetImportPath)') ">$(SlowCheetah_NuGetImportPath)</SlowCheetahTargets>
</PropertyGroup>
この上:
<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" Label="SlowCheetah" />
プロジェクトをチェックインし、ファイルSlowCheetah.Transforms.targetsを含むSlowCheetahという名前のフォルダーが存在するかどうかを確認します。このファイルがない場合は、次の手順を試してください。
これにより、不足しているファイルが再作成されます。
上記のように再インストールした後、subType
ノードとtransformOnBuild
ノードをcsprojファイルに追加する必要があり、それが機能し始めました。
<None Include="App.config">
<SubType>Designer</SubType>
<TransformOnBuild>true</TransformOnBuild>
</None>
<None Include="App.QA.config">
<DependentUpon>App.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
SlowCheetah Visual studio拡張機能[〜#〜] and [〜#〜]変換を機能させるには、問題のプロジェクトのSlowCheetah nugetパッケージをインストールする必要があります。
SlowCheetah 2.5.15とVisual Studio 2015では、nugetパッケージをアンインストールしてから、関連する.csprojファイルから以下を手動で削除する必要がありました。
<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" Label="SlowCheetah" />
そして
<PropertyGroup Label="SlowCheetah">
<SlowCheetahToolsPath>$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\..\packages\SlowCheetah.2.5.15\tools\))</SlowCheetahToolsPath>
<SlowCheetah_EnableImportFromNuGet Condition=" '$(SlowCheetah_EnableImportFromNuGet)'=='' ">true</SlowCheetah_EnableImportFromNuGet>
<SlowCheetah_NuGetImportPath Condition=" '$(SlowCheetah_NuGetImportPath)'=='' ">$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\Properties\SlowCheetah\SlowCheetah.Transforms.targets ))</SlowCheetah_NuGetImportPath>
<SlowCheetahTargets Condition=" '$(SlowCheetah_EnableImportFromNuGet)'=='true' and Exists('$(SlowCheetah_NuGetImportPath)') ">$(SlowCheetah_NuGetImportPath)</SlowCheetahTargets>
</PropertyGroup>
これが行われ、SlowCheetah nugetパッケージが再インストールされると、私の問題は解決しました。
SlowCheetah 3.2.20は、Visual Studioの「コピーしない」ファイル設定を尊重するように設計された「機能」を追加しました。したがって、.configファイルを「常にコピー」または「新しい場合はコピー」に設定していない場合、それらは出力フォルダーにコピーされません。
詳細については https://github.com/Microsoft/slow-cheetah/issues/182 を参照してください。
これは私の問題でした-3時間かけてデバッグしました...