web-dev-qa-db-fra.com

SlowCheetah ne transforme pas le fichier lors de la construction

J'ai un projet pour lequel j'essaie d'utiliser SlowCheetah. J'ai créé mon fichier de configuration (Test.web.config) et toutes les transformations que je veux utiliser (Debug_Mock.config, Debug_SQL.config, Release) dans ma configuration de build J'ai un événement post-build censé copier le fichier transformé dans un autre répertoire mais le fichier est introuvable

(erreur xcopy terminée avec le code 4)

SlowCheetah ne semble pas transformer le fichier et le placer dans le répertoire de sortie (dossier bin) comme je m'y attendais. Quelqu'un at-il une idée de pourquoi cela ne se produit pas, peut-être un cadre quelque part?

FYI: Ce processus fonctionne sur une autre machine, avec le même projet. Pour autant que je puisse dire la même configuration aussi. Mais je ne cherche peut-être pas au bon endroit.

30
Richard S.
  • Activez la verbosité de génération (Tools -> Options -> Projects and Solutions -> Build and Run) Et voyez la différence entre la version qui fonctionne et celle qui ne fonctionne pas.

  • À ma connaissance, slow-Cheetah prend en charge les transformations de configuration pour les fichiers app.config Mais pas web.configs Pour le débogage à l'heure actuelle. Il doit placer un fichier web.config Transformé dans le dossier bin de votre projet, mais votre projet lit toujours à partir du config file Dans le dossier racine. Veuillez consulter les événements avant/après la construction sur http://sedodream.com/CommentView,guid,68b7e248-b9f5-4d07-bdfe-eb037bcf2cbb.aspx .

  • Vous pouvez demander la prise en charge de la transformation de la configuration Web lors du débogage à l'adresse
    https://github.com/sayedihashimi/slow-cheetah/issues/39

  • Essayez de réinstaller Slow-Cheetah.

11
user1858286

Pour moi, j'ai trouvé que le problème était que le groupe de propriétés de guépard lent dans le fichier de configuration était en dessous de la section où il vérifiait s'il existait.

Le correctif consistait donc simplement à déplacer le groupe de propriétés au-dessus de cette ligne quelque part, ce qui permettrait à la transformation de s'exécuter comme prévu.

Mettez ceci:

<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>

Au-dessus de cela:

<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" Label="SlowCheetah" />
30
laurencee

Archivez votre projet, s'il existe un dossier nommé SlowCheetah contenant le fichier SlowCheetah.Transforms.targets. Si ce fichier est manquant, essayez les étapes suivantes:

  1. clic droit sur la solution
  2. "Gérer les packages NuGet pour la solution ...", recherchez SlowCheetah
  3. cliquez sur "Gérer"
  4. désélectionnez votre projet et cliquez sur "Ok"
  5. cliquez à nouveau sur "Gérer"
  6. sélectionnez votre projet et cliquez à nouveau sur "Ok"

Cela recréera le fichier manquant.

15
Thorsten Hüglin

Après une réinstallation comme décrit ci-dessus, j'ai dû ajouter les nœuds subType et transformOnBuild à mon fichier csproj, et il a commencé à fonctionner pour moi.

<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

Veuillez noter que vous devez installer l'extension SlowCheetah Visual studio ET le package de nuget SlowCheetah pour le projet en question pour que la transformation fonctionne.

5
Frank Liu

Avec SlowCheetah 2.5.15 et Visual Studio 2015, j'ai dû désinstaller le package nuget, puis supprimer manuellement les éléments suivants du fichier .csproj correspondant:

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

et

<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>

Une fois cela fait et le package de nuget SlowCheetah a été réinstallé, mon problème a été résolu.

3
James Blake

SlowCheetah 3.2.20 a ajouté une, euhh, "fonctionnalité", conçue pour respecter le paramètre de fichier "Ne pas copier" dans Visual Studio. Donc, si vous n'avez pas votre fichier .config défini sur "Copier toujours" ou "Copier si plus récent", il ne les copiera pas dans le dossier de sortie.

Voir https://github.com/Microsoft/slow-cheetah/issues/182 pour certains détails.

C'était mon problème - j'ai passé trois heures à le déboguer ...

2
Ken Smith