Métodos automatizados de construção Slow Cheetah
-
12-12-2019 - |
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
Solução
processo detalhado passo a passo definido aqui
http://sedodream.com/2011/12/12/SlowcheetAhxmlTransFormsFromaciserver.aspx
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:
- Na raiz da minha solução, tenho uma pasta Ferramentas que contém (entre outras coisas) SlowCheetah
- myProject/Ferramentas/SlowCheetah/SlowCheetah.Tasks.dll
- meuProjeto/Ferramentas/SlowCheetah/SlowCheetah.Transforms.targets
- 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.