9

No quiero instalar Slow Cheetah en todos los servidores de compilación.Automatizado Slow Cheetah Build métodos

Estamos utilizando Slow Cheetah para las transformaciones de configuración y está funcionando perfectamente bien. Genera múltiples archivos app.config y nosotros los hacemos si lo deseamos.

Hemos configurado varios servidores. Todos ellos tienen sus repositorios de código, extraen el código de la línea de comandos y crean los paquetes en consecuencia. Esos códigos tienen esos archivos de configuración. Pero aún cuando compilamos la aplicación desde la línea de comandos, los paquetes no se generan con la transformación si slow cheetah no está instalado en ellos. De lo contrario, funciona bien.

Nunca sabemos cuando configurar un nuevo servidor y un usuario nuevo, por lo que no es posible instalar guepardo lenta en cada uno de ellos

Es posible alguna forma de usar lenta DLL guepardo en la aplicación y de llamada el método de transformación manualmente de ella?

Gracias

+0

Mencionas la construcción de varios archivos app.config: podría ser eso lo que estoy buscando en http://stackoverflow.com/questions/12670498/slowcheetah-can-multiple-build-configs-share-one- config-transformation? :-) –

Respuesta

4

incluyo SlowCheetah en la aplicación como la siguiente, para evitar tener que instalar en los servidores que construyen la solución:

  1. En mi raíz solución, tengo una carpeta Tools que contienen (entre otras cosas) SlowCheetah
    1. miproyecto/Herramientas/SlowCheetah/SlowCheetah.Tasks.dll
    2. miproyecto/Herramientas/SlowCheetah/SlowCheetah.Transforms.targets
  2. En .csproj-archivo del proyecto de aplicación (en web), tengo esto:

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

y esto:

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

..y parece para manejar el trabajo muy bien, incluso cuando se construye/publica desde TeamCity.

Editar:

Va a encontrar los dos archivos mencionados en %localappdata%\Microsoft\MSBuild\SlowCheetah\v1 (drive:\Users\yourusername\AppData\Local\Microsoft\MSBuild\SlowCheetah\v1) Cuando se ha instalado SlowCheetah en Visual Studio.

+0

¿Cuál sería el SlowCheetah.Transforms.Targets, amablemente guíame. Gracias – MegaMind

+0

Ver mi edición ahora –

10

Como alternativa a SlowCheetah, es posible manejar esta funcionalidad editando sus archivos de proyecto manualmente. Es un poco más complicado de configurar, pero significa que no se requieren archivos DLL adicionales.

Abra su archivo de proyecto en un editor de texto. En la parte inferior del archivo de proyecto, justo antes de la etiqueta de cierre, incluyen los siguientes:

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

A continuación, encontrará en su proyecto de presentar la línea y sustituirlo por el siguiente:

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

Usted' Necesitaré agregar un contenido adicional para cada configuración que agregue. Desafortunadamente, con este método no obtiene el menú contextual "agregar transformaciones".

Después de que se trata de un caso de la creación de los archivos en el directorio del proyecto, y luego ya está listo para ir. No es tan elegante como SlowCheetah, pero mantiene tu código portátil.

+6

En realidad enchufar el Microsoft.Web.Publishing.Tasks.dll como tarea significa que usted tiene que tener Visual Studio instalado en servidor de compilación. Este Dll se envía solo con Visual Studio, no con .NET Framework. Por lo tanto, su afirmación sobre "no se requieren DLL adicionales" es incorrecta. NB: Por lo que yo entiendo - slowcheetah fue creado exacta para resolver esta limitación - no era tarea concreta para transformar configuraciones \ XML, pero los desarrolladores no se les permitió usarlo excepto con Visual Studio. Dudo que Sayed Ibrahim Hashimi comenzara lento porque no sabía acerca de la tarea TransformXml. –

+0

¿Cómo compilan los proyectos web comunes con las transformaciones de configuración en una máquina de compilación si ese .dll no está presente? (Admito que soy un tanto ignorante sobre esto, siempre he tenido VS instalado en una máquina de construcción.) Creo que SlowCheetah se comenzó a simplificar el proceso, sin duda el proceso que describo anteriormente es más engorroso. –

+1

¿verdad? AFAIK: el proyecto se compila pero no se aplica ninguna transformación. Y sí, esta es la razón por la cual todos nuestros agentes de compilación tienen VS instalado. En realidad, no hay una diferencia significativa entre lo que VS hace con las transformaciones web.config y lo que SlowCheetah. Corrígeme si me equivoco, pero VS acaba de bloquear esta función para web.configs, y en realidad es aplicable a cualquier tipo de archivo xml. He utilizado esta tarea de transformar no sólo ServiceDefinition azur y ServiceConfiguration, pero para generar una transformación en tiempo de compilación para ejecutar ejemplo emulador azul en el servidor de prueba compartida - doloroso pero realizable tarea –

4

La versión más reciente de SlowCheetah (2.5.14) está disponible en Nuget. Al agregar a través de nuget, se almacena en la carpeta packages en el directorio de la solución local (como todos los paquetes nuget), lo que significa que ahora debería funcionar en cualquier servidor de compilación.