2012-04-24 8 views
5

Estoy usando SlowCheetah para transformar un archivo de configuración XML en un proyecto web de Visual Studio en un servidor de CI. En Visual Studio 2010, el XML se transformará muy bien cuando publique, pero en el servidor de CI no se produce ninguna transformación. En su lugar, obtengo el archivo de configuración original no transformado. Seguí las instrucciones proporcionadas por Sayed Ibrahim's Blog donde explica para agregar el dll SlowCheetah y el archivo de objetivos en la solución y señala el archivo de proyecto para usar esos archivos. Hice este cambio e hice una publicación en Visual Studio solo para asegurarme de que funcionó y lo hizo. Pero cuando construyo el proyecto en el servidor de CI, tengo el mismo problema que tenía antes.SlowCheetah no produce el archivo de configuración transformada en el servidor de CI

Mi suposición es que tiene algo que ver con mi script de MSBuild que estoy usando para construir mi proyecto en el servidor de CI. ¿Debo agregar algo a esto para decirle a mi proyecto que use SlowCheetah? Mi escritura de la estructura es la siguiente:

<Project DefaultTargets="DoPublish" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<PropertyGroup> 
    <SourceFileRootFolder>$(CCNetWorkingDirectory)\Code</SourceFileRootFolder> 
    <WebFolder>DCSIWeb\DCSIWeb</WebFolder> 
    <ReleaseFolder>C:\Builds\BuildFolder</ReleaseFolder> 
</PropertyGroup> 
<PropertyGroup Condition ="$(CCNetWorkingDirectory) == ''"> 
    <SourceFileRootFolder>C:\Builds\ProjectWorkingDirectory\Code</SourceFileRootFolder> 
    <ReleaseFolder>C:\Builds\BuildFolder</ReleaseFolder> 
</PropertyGroup> 
<Target Name="CleanSource"> 
    <Message Text="Removing all source files from $(ReleaseFolder)" /> 
    <RemoveDir Directories="$(ReleaseFolder)" /> 
</Target> 
<Target Name="DoPublish"> 
    <CallTarget Targets="CleanSource"/> 
    <MSBuild Projects="$(SourceFileRootFolder)\DCSIWeb.sln" Targets="Clean;Build" /> 
    <MSBuild Projects="$(SourceFileRootFolder)\$(WebFolder)\DCSIWeb.csproj" 
     Targets="_CopyWebApplication;_BuiltWebOutputGroupOutput;TransformWebConfig" 
     Properties="OutDir=$(ReleaseFolder)\" ></MSBuild> 
</Target> 

El script MSBuild básicamente construye el proyecto y coloca el proyecto en "C: \ Builds \ BuildFolder". Cuando miro en la carpeta de compilación después de que se haya realizado la compilación, veo el archivo .config que necesito, pero no se ha producido ninguna transformación. Es el mismo archivo que era antes.

+0

¿Puede enviarme un correo electrónico? sayedha [at] {Microsoft} [dotcom] –

+2

He encontrado el mismo problema ... por lo que he visto hasta ahora, el instalador de SlowCheetah coloca el código en una ubicación específica para el usuario. Entonces, si está instalando SlowCheetah como usted mismo y ejecuta su CI con un usuario diferente, es posible que SlowCheetah no pueda ejecutarse porque no puede encontrar su propio código. Eso es lo que he descubierto hasta ahora de todos modos ... todavía no lo tengo funcionando yo mismo corriendo en TeamCity;) –

+1

Jack, ¿siguió las instrucciones en mi blog vinculado anteriormente? –

Respuesta

0

Siempre me disgusta ese tipo de respuestas, pero le recomiendo que use Config Transformation Tool. Es otra herramienta para usar las transformaciones de Xdt, pero es mucho más simple que Cheetah y un poco inteligente (params de soporte) y luego una tarea de MSBuild seria. Puede almacenarse en una solución o restaurarse automáticamente en el servidor de CI a través del paquete NuGet. Solo necesita la utilidad de llamada con params. Soy un fan de Xdt desde que se produjo y encontré estas herramientas como las más fáciles de usar en mis proyectos.

Cuestiones relacionadas