web-dev-qa-db-ja.com

SlowCheetahがビルド時にファイルを変換しない

SlowCheetahを使用しようとしているプロジェクトがあります。構成ファイル(Test.web.config)を作成し、ビルド構成で使用するすべての変換(Debug_Mock.config、Debug_SQL.config、Release)を作成しました。ビルド後のイベントでは、変換されたファイルをコピーすることになっています。別のディレクトリにありますが、ファイルが見つかりません

(エラーxcopyはコード4で終了しました)

SlowCheetahは、ファイルを変換して出力ディレクトリ(binフォルダー)に配置していないようです。なぜそれが起こっていないのか、おそらくどこかの設定について誰かが何か考えを持っていますか?

参考:このプロセスは、同じプロジェクトの別のマシンで機能します。私の知る限り、同じ設定です。しかし、私は正しい場所を見ていません。

30
Richard S.
  • ビルドの詳細度(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

  • スローチーターを再インストールしてみてください。

11
user1858286

私にとっての問題は、設定ファイルの遅いチータープロパティグループが、存在するかどうかを確認するセクションの下にあることでした。

したがって、修正は、プロパティグループをその行の上に移動するだけで、変換が期待どおりに実行されるようにすることでした。

これを入れてください:

<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" />
30
laurencee

プロジェクトをチェックインし、ファイルSlowCheetah.Transforms.targetsを含むSlowCheetahという名前のフォルダーが存在するかどうかを確認します。このファイルがない場合は、次の手順を試してください。

  1. ソリューションを右クリック
  2. 「ソリューションのNuGetパッケージを管理...」、SlowCheetahを参照
  3. 「管理」をクリックします
  4. プロジェクトの選択を解除して「OK」をクリックします
  5. もう一度「管理」をクリックします
  6. プロジェクトを選択して、もう一度[OK]をクリックします

これにより、不足しているファイルが再作成されます。

15

上記のように再インストールした後、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>
5
Hink

SlowCheetah Visual studio拡張機能[〜#〜] and [〜#〜]変換を機能させるには、問題のプロジェクトのSlowCheetah nugetパッケージをインストールする必要があります。

5
Frank Liu

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パッケージが再インストールされると、私の問題は解決しました。

3
James Blake

SlowCheetah 3.2.20は、Visual Studioの「コピーしない」ファイル設定を尊重するように設計された「機能」を追加しました。したがって、.configファイルを「常にコピー」または「新しい場合はコピー」に設定していない場合、それらは出力フォルダーにコピーされません。

詳細については https://github.com/Microsoft/slow-cheetah/issues/182 を参照してください。

これは私の問題でした-3時間かけてデバッグしました...

2
Ken Smith