Pergunta

Não quero instalar o Slow Cheetah em todos os servidores de compilação.

Estamos usando o Slow Cheetah para transformações de configuração e está funcionando perfeitamente.Ele gera vários arquivos app.config e fazemos alterações neles conforme desejado.

Configuramos vários servidores.Todos eles têm seus repositórios de código, eles extraem o código da linha de comando e constroem os pacotes de acordo.Esses códigos contêm esses arquivos de configuração.Mas ainda assim, quando compilamos o aplicativo a partir da linha de comando, os pacotes não serão gerados com a transformação se o slow cheetah não estiver instalado neles.Caso contrário, funciona bem.

Nunca sabemos quando configuramos um novo servidor e um novo usuário, por isso não é possível instalar o Slow cheetah em cada um deles

É possível de alguma forma usar dll chita lenta no aplicativo e chamar o método de transformação manualmente a partir dele?

Obrigado

Foi útil?

Outras dicas

Como alternativa ao SlowCheetah, é possível lidar com essa funcionalidade editando manualmente os arquivos do projeto.É um pouco mais complicado de configurar, mas significa que você não precisa de DLLs extras.

Abra o arquivo do seu projeto em um editor de texto.Na parte inferior do arquivo do projeto, logo antes da tag de fechamento, inclua o seguinte:

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

Em seguida, encontre a linha no arquivo do seu projeto e substitua-a pelo seguinte:

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

Você precisará adicionar uma inclusão de conteúdo extra para cada configuração adicionada – infelizmente, com esse método, você não obtém o menu de contexto simples “adicionar transformações”.

Depois disso, basta criar os arquivos no diretório do seu projeto e você estará pronto para prosseguir.Não é tão elegante quanto o SlowCheetah, mas mantém seu código portátil.

A versão mais recente do Slowcheetah (2.5.14) está disponível em Nuget .Ao adicionar via Nuget, ele é armazenado na pasta packages no diretório de solução local (como todos os pacotes Nuget), o que significa que ele deve funcionar em qualquer servidor de compilação fora da caixa agora.

Incluo o SlowCheetah no aplicativo da seguinte forma, para evitar que ele seja instalado nos servidores que constroem a solução:

  1. Na raiz da minha solução, tenho uma pasta Ferramentas que contém (entre outras coisas) SlowCheetah
    1. myProject/Ferramentas/SlowCheetah/SlowCheetah.Tasks.dll
    2. meuProjeto/Ferramentas/SlowCheetah/SlowCheetah.Transforms.targets
  2. No arquivo .csproj do projeto de aplicativo (web), eu tenho o seguinte:

  <PropertyGroup>
          <SlowCheetahTargets Condition=" '$(SlowCheetahTargets)'=='' ">$(MSBuildProjectDirectory)\..\Tools\SlowCheetah\SlowCheetah.Transforms.targets  </SlowCheetahTargets>
   </PropertyGroup>

e isto:

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

..e parece funcionar muito bem, mesmo ao construir/publicar no TeamCity.

Editar:

Você encontrará os dois arquivos mencionados em %localappdata%\Microsoft\MSBuild\SlowCheetah\v1 (drive:\Users\yourusername\AppData\Local\Microsoft\MSBuild\SlowCheetah\v1) quando você instalou o SlowCheetah no Visual Studio.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top