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 :
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
Debería poder lograr esto utilizando el objetivo Paquete y especificando el directorio temporal.
msbuild solution.sln /p:Configuration=Release;DeployOnBuild=true;DeployTarget=Package;_PackageTempDir=../publish
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.
Este es un excelente artículo sobre las transformaciones personalizadas:
http://www.diaryofaninja.com/blog/2011/09/14/using-custom-webconfig-transformations-in-msbuild
Necesitábamos personalizar las implementaciones web un poco más de lo normal debido a toneladas de ASP clásico y otras maldades que tuvimos que acomodar. Este artículo ahorró horas de excavación a través de los objetivos de MS.
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.
No soy un experto con MSBuild, pero pude utilizar la información de este enlace para realizar la misma tarea:
http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx
Hay una sección relacionada con MSBuild cerca de la parte inferior del artículo. Espero que esto ayude.