visual studio net development deploy asp asp.net xml visual-studio-2010 msbuild web-config-transform

asp.net - studio - MSBuild Script y VS2010 publican aplicación Web.config Transform



web deploy iis visual studio (6)

Alternativamente, intente utilizar la Herramienta de Transformación XDT :

http://ctt.codeplex.com

Estoy usando esto en lugar de jugar con objetivos oscuros de msbuild. Funciona con app.config no solo web.config .

Por lo tanto, tengo VS 2010 instalado y estoy en proceso de modificar mi script MSBuild para nuestra integración de compilación de TeamCity. Todo está funcionando bien con una excepción.

¿Cómo puedo decirle a MSBuild que quiero aplicar los archivos de transformación Web.conifg que he creado cuando publico la compilación ...

Tengo lo siguiente que produce el sitio web compilado, pero genera un archivo Web.config, Web.Debug.config y, Web.Release.config (Todos 3) en el directorio de salida compilado. En el estudio, cuando realizo un sistema de publicación en archivos, haré la transformación y solo mostraré Web.config con los cambios apropiados ...

<Target Name="CompileWeb"> <MSBuild Projects="myproj.csproj" Properties="Configuration=Release;" /> </Target> <Target Name="PublishWeb" DependsOnTargets="CompileWeb"> <MSBuild Projects="myproj.csproj" Targets="ResolveReferences;_CopyWebApplication" Properties="WebProjectOutputDir=$(OutputFolder)$(WebOutputFolder); OutDir=$(TempOutputFolder)$(WebOutputFolder)/;Configuration=Release;" /> </Target>

Cualquier ayuda sería genial ..!

Sé que esto se puede hacer de otra manera, pero me gustaría hacerlo utilizando el nuevo VS 2010 si es posible



Estaba buscando información similar y no la encontré, así que busqué en los archivos .targets que vienen con Visual Studio 2010 y MSBuild 4.0. Pensé que era el mejor lugar para buscar la tarea MSBuild que realizaría la transformación.

Por lo que he podido decir, se usa la siguiente tarea MSBuild:

<Project ToolsVersion="4.0" DefaultTargets="Deploy" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)/Microsoft/VisualStudio/v10.0/Web/Microsoft.Web.Publishing.Tasks.dll"/> <PropertyGroup> <ProjectPath>C:/Path to Project/Here</ProjectPath> <DeployPath>C:/Path to Deploy/There</DeployPath> <TransformInputFile>$(ProjectPath)/Web.config</TransformInputFile> <TransformFile>$(ProjectPath)/Web.$(Configuration).config</TransformFile> <TransformOutputFile>$(DeployPath)/Web.config</TransformOutputFile> <StackTraceEnabled>False</StackTraceEnabled> </PropertyGroup> <Target Name="Transform"> <TransformXml Source="$(TransformInputFile)" Transform="$(TransformFile)" Destination="$(TransformOutputFile)" Condition="some condition here" StackTrace="$(StackTraceEnabled)" /> </Target> </Project>

He probado lo anterior y puedo confirmar que funciona. Es posible que necesite ajustar la estructura un poco para que se adapte mejor a su script de compilación.



Me funcionó con el siguiente cambio

<MSBuild Projects="$(ProjectFile)" Targets="ResolveReferences;_WPPCopyWebApplication" Properties="WebProjectOutputDir=TempOutputFolder;OutDir=$(WebProjectOutputDir);Configuration=$(Configuration);" />

Desde el archivo Microsoft.WebApplication.targets en la carpeta MsBuild

_CopyWebApplication This target will copy the build outputs along with the content files into a _PublishedWebsites folder. This Task is only necessary when $(OutDir) has been redirected to a folder other than ~/bin such as is the case with Team Build. The original _CopyWebApplication is now a Legacy, you can still use it by setting $(UseWPP_CopyWebApplication) to true. By default, it now change to use _WPPCopyWebApplication target in Microsoft.Web.Publish.targets. It allow to leverage the web.config trsnaformation.