2011-07-07 9 views
7

Estoy intentando crear un proyecto de implementación web 2010 para una solución. He instalado Windows SDK y Web Deployment Project 2010 RTW en el servidor de compilación, así como también he copiado los archivos .target faltantes para MSBuild.Web Deployment Project & TeamCity

Cuando se trata de construir el proyecto que escupe el siguiente error

C: \ Archivos de programa \ MSBuild \ Microsoft \ WebDeployment \ v10.0 \ Microsoft.WebDeployment.targets (1589, 9): error MSB6004: la ubicación ejecutable de la tarea especificada "C: \ Archivos de programa \ MSBuild \ Microsoft \ WebDeployment \ v10.0 \ aspnet_merge.exe" no es válida.

Desafortunadamente, al buscar en Google resultados sobre este error, no revela nada de mucho valor. Cualquier ayuda para que TeamCity construya con éxito el proyecto de implementación web sería apreciada.

Respuesta

3

La solución más adecuada debería ser establecer la propiedad TargetFrameworkSDKDirectoryBin en su archivo .wdproj. Por ejemplo:

esta configuración, se utiliza en .dtproj archivo, anular el valor predeterminado definido en Microsoft.WebDeployment.targets como se puede ver aquí

<Target 
    Name="GetAspNetMergePath" 
    DependsOnTargets="$(GetAspNetMergePathDependsOn)"> 
    <PropertyGroup> 
     <AspnetMergeName>aspnet_merge.exe</AspnetMergeName> 
     <AspnetMergePath>$(MSBuildExtensionsPath)\Microsoft\WebDeployment\v10.0</AspnetMergePath> 
     <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKDirectoryBin)$(AspnetMergeName)')">$(TargetFrameworkSDKDirectoryBin)</AspnetMergePath> 
    </PropertyGroup> 
</Target> 

la segunda AspnetMergePath significa que si existe alguna parte de lo contrario, un $(TargetFrameworkSDKDirectoryBin) que apunta a un archivo aspnet_merge.exe existente, esto será utilizado.

4

bien su aspnet_merge se señaló al lugar equivocado - en mi escritura de la estructura tengo algo que termina de la siguiente manera:

<ItemGroup> 
    <ASPNETPath Include="F:\Program Files\Microsoft SDKs\Windows\v6.0A\bin" /> 
</ItemGroup> 

<Target Name="ASPNET Merge"> 
    <AspNetMerge 
     ExePath="@(ASPNETPath)" 
     ApplicationPath=".\Release" 
     SingleAssemblyName="CoreMicrosite" 
     /> 
</Target> 

probarlo y ver

+1

Genial, configuré 'ExePath' para' aspnet_merge.exe' en el directorio 'NETFX 4.0 Tools' en' Microsoft.WebDeployment.targets' y está compilando correctamente ahora. Gracias –

+0

excelente - ¡me alegro de que ahora funciona! – stack72

2

Cambio en el siguiente nodo en la línea 1562 en el archivo "Microsoft.WebDeployment.targets":

<Target 
     Name="GetAspNetMergePath" 
     DependsOnTargets="$(GetAspNetMergePathDependsOn)"> 
     <PropertyGroup> 
      <AspnetMergeName>aspnet_merge.exe</AspnetMergeName> 
      <!-- OLD 
      <AspnetMergePath>$(MSBuildExtensionsPath)\Microsoft\WebDeployment\v10.0</AspnetMergePath> 
      <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKDirectoryBin)$(AspnetMergeName)')">$(TargetFrameworkSDKDirectoryBin)</AspnetMergePath> 
      --> 
      <AspnetMergePath>C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\</AspnetMergePath> 
      <AspnetMergePath Condition=" '$(TargetFrameworkVersion)' == 'v4.0' ">C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\</AspnetMergePath> 
     </PropertyGroup> 
    </Target> 

que añadió un comentario solución en la página correspondiente de Microsoft Connect:
http://connect.microsoft.com/VisualStudio/feedback/details/706047/visual-studio-2010-web-deployment

+0

+1, ya que las otras respuestas suponen que aspnet_merge.exe está en la misma ubicación en las máquinas de desarrollo y el servidor de compilación. Esto soluciona el problema, pero tenga en cuenta que el último SDK es 7.1, no 7.0A. – si618

Cuestiones relacionadas