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.
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.
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" />
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:
Cela recréera le fichier manquant.
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>
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.
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.
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 ...