Estoy tirando de mi cabello sobre este problema de MSBuild.¿Cómo puedo evitar esta estructura de carpetas profundas con MSDeploy al sistema de archivos utilizando MSBuild?
Estamos utilizando TeamCity para crear una solución con dos sitios web de MVC. Como parte de la compilación, estamos implementando en una carpeta en el servidor de compilación. IIS señala a esta carpeta que nos proporcione una construcción de integración visible para la administración.
Aquí está el código del archivo MSBuild que usa MSDeploy para publicar un paquete, pero no como un archivo zip.
<Target Name="Deploy">
<MSBuild
Projects="$(SolutionFile)"
Properties="Platform=$(Platform);Configuration=$(Configuration);
DeployOnBuild=true;
DeployTarget=Package;
PackageLocation=$(PackageLocation);
PackageAsSingleFile=False;
AutoParameterizationWebConfigConnectionStrings=False" />
</Target>
El problema aquí es que obtenemos una estructura de carpetas increíblemente profunda. Aquí hay un ejemplo ...
C: \ DEPLOY \ Archive \ Content \ C_C \ Users \ Edmond \ Documents \ Visual Studio 2008 \ CreatioGreen \ Creatio \ Code \ core \ trunk \ Website \ Website \ obj \ Release \ Package \ PackageTmp [archivos publicados]
realmente quiero implementar en carpetas predecibles como ...
C: \ build \ sitio web [archivos publicados] C: \ build \ mobilewebsite [archivos publicados]
Ese es el fondo. Aquí están las preguntas específicas.
¿Estamos cometiendo un error al intentar usar MSDeploy para publicar en un sistema de archivos local? Básicamente, necesitamos el equivalente de la característica de "publicación" de VS2010, con transformaciones de configuración. No estamos intentando implementar en instancias de IIS remotas ni nada.
¿Hay alguna forma de hacerlo pero especificando las carpetas de publicación?
He estado tratando de usar la tarea Copiar de MSBuild para copiar los archivos en carpetas más sensatas, pero no puedo encontrar la forma de usar comodines para especificar las carpetas que necesitamos tomar, sería necesario algo así como ...
C: \ FolderPackageEndsUpIn [ANYFOLDERS] \ Sitio web [ANYFOLDERS] \ PackageTmp * * .
¡Ayuda!
gracias por responder, kateroh! Esto ayudó. – centralscru
Lo estaba haciendo así hasta que descubrí que no podía hacer que las transformaciones de Web.config funcionaran. ¿Alguna idea sobre cómo hacer eso sin usar el objetivo del paquete? –
Puede resolver este problema de las transformaciones de Web.config elaborando una regla de reemplazo de omisiones que haría que la implementación web salte la sincronización de web.config y reemplace web.release.config con web.config. Aquí hay una publicación de blog sobre las reglas de reemplazo de omisiones para que pueda comenzar: http://blogs.iis.net/msdeploy/archive/2008/05/23/how-to-write-skip-and-replace-rules-for- msdeploy.aspx – kateroh