Question

Je ne souhaite pas installer Slow Cheetah sur tous les serveurs de build.

Nous utilisons Slow Cheetah pour les transformations de configuration et cela fonctionne parfaitement.Il génère plusieurs fichiers app.config et nous y apportons les modifications souhaitées.

Nous avons installé plusieurs serveurs.Tous ont leurs référentiels de code, ils extraient le code de la ligne de commande et construisent les packages en conséquence.Ces codes contiennent ces fichiers de configuration.Mais quand nous compilons l'application à partir de la ligne de commande, les packages ne sont pas générés avec la transformation si Slow Cheetah n'est pas installé dessus.Sinon ça marche bien.

Nous ne savons jamais quand nous installons un nouveau serveur et un nouvel utilisateur, il n'est donc pas possible d'installer Slow cheetah sur chacun d'entre eux.

Il est possible d'une manière ou d'une autre d'utiliser la DLL lente de guépard dans l'application et d'appeler manuellement la méthode de transformation à partir de celle-ci ?

Merci

Était-ce utile?

Autres conseils

comme alternative à Slowcheetah, il est possible de gérer cette fonctionnalité en modifiant manuellement vos fichiers de projet.C'est un peu plus lourd de mettre en place, mais cela signifie que vous n'avez aucune DLL supplémentaire requise.

Ouvrez votre fichier de projet dans un éditeur de texte.Au bas du fichier de projet, juste avant la balise de fermeture, incluez les éléments suivants:

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

Ensuite, trouvez dans votre fichier de projet la ligne et remplacez-la par les éléments suivants:

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

Vous devrez ajouter un contenu supplémentaire include pour chaque configuration que vous ajoutez - malheureusement avec cette méthode, vous n'obtenez pas le menu contextuel "Ajouter des Transforms".

Après cela, c'est un cas de création des fichiers de votre répertoire de projet, puis vous êtes prêt à partir.Ce n'est pas aussi slick que Slowcheetah, mais il garde votre code portable.

La version la plus récente de SlowCheetah (2.5.14) est disponible sur Nuget.Lors de l'ajout via nuget, il est stocké dans le packages dossier dans le répertoire de solution local (comme tous les packages nuget), ce qui signifie qu'il devrait maintenant fonctionner sur n'importe quel serveur de build prêt à l'emploi.

J'inclus Slowcheetah dans l'application, comme ci-dessous, pour éviter d'avoir installé sur les serveurs qui construisent la solution:

  1. dans ma racine de ma solution, j'ai un outil de dossier contenant (entre autres) Slowcheetah
    1. MyProject / Outils / Slowcheetah / Slowcheetah.Tasks.dll
    2. MyProject / Outils / Slowcheetah / Slowcheetah.Transforms.Targets
    3. dans le fichier .csproj du projet (Web-), j'ai ceci:
      
        <PropertyGroup>
                <SlowCheetahTargets Condition=" '$(SlowCheetahTargets)'=='' ">$(MSBuildProjectDirectory)\..\Tools\SlowCheetah\SlowCheetah.Transforms.targets  </SlowCheetahTargets>
         </PropertyGroup>
      

      Et ceci:

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

      .. et il semble gérer le travail très bien, même lors de la construction / de la publication de TeamCity.

      EDIT:

      Vous trouverez les deux fichiers mentionnés dans %localappdata%\Microsoft\MSBuild\SlowCheetah\v1 (drive:\Users\yourusername\AppData\Local\Microsoft\MSBuild\SlowCheetah\v1) lorsque vous avez installé Slowcheetah dans Visual Studio.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top