msbuild visual-studio-2012 msbuild-task webdeploy msbuild-target

Objetivos de MSBuild y problemas de Visual Studio 2012



visual-studio-2012 msbuild-task (2)

Me está resultando difícil implementar los ensamblados de terceros que no son de referencia implementados a través de Webdeploy con la interfaz de usuario de Visual Studio 2012. Tengo una carpeta llamada ''libraries'', que contiene algunos ensambles. A través de lo siguiente en mi archivo * .csproj, puedo establecer la Acción de compilación en '' ThirdPartyAssemblies '':

<ItemGroup> <AvailableItemName Include="ThirdPartyAssemblies"> <Visible>false</Visible> </AvailableItemName> </ItemGroup> <Target Name="AfterBuild"> <Message Text="Build | Third party assemblies" Importance="high" /> <Copy DestinationFolder="$(OutputPath)" SourceFiles="@(ThirdPartyAssemblies)" SkipUnchangedFiles="true" /> </Target>

Esto funciona genial; cuando construyo, los ensambles se copian a la raíz de la carpeta bin :-) Ahora tengo un problema: no puedo obtener estos archivos publicados en el servidor a través de Webdeploy. He intentado muchas cosas, parece que no puedo encontrar un objetivo MSBuild adecuado para esta tarea ... Con Visual Studio 2010 podría usar esto:

<Target Name="MyTargetName"> <Message Text="Deploy | Third party assemblies" Importance="high" /> <Copy DestinationFolder="$(OutputPath)" SourceFiles="@(ThirdPartyAssemblies)" SkipUnchangedFiles="true" /> </Target> <PropertyGroup> <OnAfterCopyAllFilesToSingleFolderForPackage> MyTargetName </OnAfterCopyAllFilesToSingleFolderForPackage> </PropertyGroup>

El problema es; el objetivo OnAfterCopyAllFilesToSingleFolderForPackage ya no se llama: - /

Después de indagar en el C:/Program Files (x86)/MSBuild/Microsoft/VisualStudio/v11.0/Web/Microsoft.Web.Publishing.targets'' file, I''ve also tried ''OnAfterCopyAllFilesToSingleFolderForMsdeploy , pero no puedo obtener para que funcione

¿Alguien puede decirme qué objetivo puedo usar para copiar esos ensamblajes en la carpeta del paquete / el servidor con Webdeploy?

¿Por qué Visual Studio 2012 no copia la carpeta bin completa en la carpeta Package?


Estás usando vs2012 y esto significa que tienes un nuevo y brillante msbuild 4.0 =). Es mucho más simple conectar su llamada objetivo con el nuevo atributo AfterTargets . Puede verificar mi respuesta sobre esta pregunta para ver ejemplos de uso.


Gracias a Alexey encontré la solución a mi problema, esto es lo que estoy usando ahora en mi archivo .csproj para admitir la copia de ensamblajes de terceros para Filesystem y Webdeploy:

<ItemGroup> <AvailableItemName Include="ThirdPartyAssemblies"> <Visible>false</Visible> </AvailableItemName> </ItemGroup> <Target Name="AfterBuild"> <Message Text="Build | Copying third party assemblies to output folder ($(OutputPath))" Importance="high" /> <Copy DestinationFolder="$(OutputPath)" SourceFiles="@(ThirdPartyAssemblies)" SkipUnchangedFiles="true" /> </Target> <Target Name="CopyBinFiles" AfterTargets="CopyAllFilesToSingleFolderForPackage" BeforeTargets="MSDeployPublish"> <Message Text="Deploy | Copying third party assemblies to output folder ($(_PackageTempDir)/bin/)" Importance="high" /> <Copy DestinationFolder="$(_PackageTempDir)/bin/" SourceFiles="@(ThirdPartyAssemblies)" SkipUnchangedFiles="true" /> </Target>