20

que estoy queriendo utilizar Visual Web Developer Express 2010 para publicar un sitio web, pre-compilados a un servidor remoto a través de FTP, con los siguientes ajustes:"No se puede encontrar el AspnetMergePath válido" en Visual Web Developer Publish?

  • Implementar sólo los archivos necesarios para ejecutar esta aplicación
  • Precompile este aplicación antes de la publicación de
  • Permitir web sea actualizable
  • no hay bases de datos están siendo desplegados
  • sitio está siendo desplegado como jerarquía de archivos, no como .zip empaquetar

Mi primera construcción/desplegar parecía haber salido bien, pero después de mi segunda recopilación recibo el siguiente error:

Transformed web.config using C:\path_to_site\Web.Debug.config into obj\Debug\TransformWebConfig\transformed\web.config. 
Copying all files to temporary location below for package/publish: 
obj\Debug\AspnetCompileMerge\Source. 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.5\Web\Transform\Microsoft.Web.Publishing.AspNetCompileMerge.targets(132,5): Error : Can't find the valid AspnetMergePath 

Y aquí es un subconjunto del contenido de la Microsoft.Web.Publishing.AspNetConfigurationMerge. presentar objetivos:

<Target 
     Name="GetAspNetMergePath" 
     DependsOnTargets="$(GetAspNetMergePathDependsOn)" 
     Condition ="'$(GetAspNetMergePath)' != 'false'"> 
    <PropertyGroup> 
     <AspnetMergeName>aspnet_merge.exe</AspnetMergeName> 
     <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath> 
    </PropertyGroup> 
    <Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))" 
      Text="Can't find the valid AspnetMergePath" /> 
    </Target> 

EDIT: Cambiar la configuración de publicación para borrar todos los archivos existentes antes de la publicación no se soluciona el problema después de todo. Asumo que el problema es local por ahora debido a esto.

No parece haber una etiqueta AspMergePath en mi web.config. No estoy al tanto si se supone que debo agregar manualmente la etiqueta. Sin embargo, la ruta "obj {configuración de publicación} \ AspnetCompileMerge \ Source" existe en mi proyecto.

Y en caso de que las cosas, mi nombre del proyecto es "TestProject.NET"

Su regeneración se aprecia.

+0

¿ha intentado publicar su sitio a través del método "Sistema de archivos"? Solo como prueba. – BrOSs

+0

Sí. El método de publicación "Sistema de archivos" se encuentra con el mismo problema. –

+0

no se supone que agregue ninguna etiqueta ('AspMergePath'), otra prueba. Funciona con Ctrl + Shift + W? – BrOSs

Respuesta

12

Lo que necesita es aspnet_merge.exe, una herramienta que se distribuye como parte del SDK de Windows. Está destinado a precompilar sitios, por lo que puede desactivar esa precompilación o instalar la versión adecuada de Windows SDK. La referencia es a Wikipedia, debido a buenos enlaces preparados para las páginas de descarga. No necesita descargar/instalar todo (es enorme), solo descargue el instalador web y seleccione las herramientas .Net, le tomará alrededor de 50 megabytes.

Tenga en cuenta que se incluye con Visual Studio 2010 Windows SDK ver. 7.0A no está disponible para la descarga por separado, por lo que tendrá que instalar Visual Studio en su servidor de compilación o ajustar algo como se describe en las respuestas a "Running MSBuild fails to read SDKToolsPath".

+0

¡Gracias por la información! Desafortunadamente, no puedo verificar la corrección de esta respuesta ya que desde entonces he cambiado proyectos. –

+0

Respuesta correcta. Funciona incluso hoy en día. En el servidor de compilación necesita instalar 2015 MSBuild Tools y Windows 10 SDK. – MoonStom

9

Me sale el mismo problema. Busqué en todos los sitios relacionados con Microsoft, encontré muchas quejas y ninguna intención de Microsoft para solucionarlo.

Aquí cómo lo trabajé en mi sistema. Edite el archivo Microsoft.Web.Publishing.AspNetConfigurationMerge.targets y agregue la siguiente línea. Por favor asegúrese de que la ruta de Microsoft SDK es el mismo en su PC, si no, cambiarlo:

<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\</TargetFrameworkSDKToolsDirectory> 

Así es cómo debe verse como:

<Target 
    Name="GetAspNetMergePath" 
    DependsOnTargets="$(GetAspNetMergePathDependsOn)" 
    Condition ="'$(GetAspNetMergePath)' != 'false'"> 
<PropertyGroup> 
    <TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\</TargetFrameworkSDKToolsDirectory> 
    <AspnetMergeName>aspnet_merge.exe</AspnetMergeName> 
    <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath> 
</PropertyGroup> 
<Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))" 
     Text="Can't find the valid AspnetMergePath" /> 

+0

Al tener el mismo problema, esta solución funciona bien para mí. Incluso si hubiera preferido el más "limpio", el propuesto por @tspauld, lamentablemente no logré que funcionara en mi caso. – PierrOz

+0

Esta solución funcionó también para mí, pero no sé por qué faltaba completamente la línea '' de mi archivo '.targets'. –

11

Aquí es una solución que no requiere cambiar el archivo de objetivos.La solución del http://connect.microsoft.com/VisualStudio/feedback/details/786492/publish-cant-find-the-valid-aspnetmergepath sugiere pasar propiedades adicionales a msbuild. Yo era capaz de conseguir que funcione utilizando la siguiente:

msbuild website.publishproj /p:DeployOnBuild=true /p:PublishProfile=Release /p:VisualStudioVersion=12.0 /p:AspnetMergePath="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\"

La clave aquí es la propiedad AspnetMergePath, que es posible que tenga que cambiar si el SDK de Windows está instalado en una ubicación diferente. Si incluyo la propiedad GetAspNetMergePath de la solución, falla, pero puede ser necesario según la versión del SDK.

+0

Ahh ... no funcionó .. Win8, VS 2012 y 2013 instalados, lo que posiblemente podría ser la ruta :( – manishKungwani

+0

Funcionó muy bien para mí! GRACIAS! :) – Natalia

+0

Me di cuenta que también pasó VisualStudioVersion = 12.0 ... usted wouldn Está intentando construir utilizando VS 2013 en un servidor de compilación TFS 2012, ¿verdad? – bwerks

0

Me sale el mismo problema.

Edite el archivo Microsoft.Web.Publishing.AspNetConfigurationMerge.targets y agregue la siguiente línea. Asegúrese de ejecutar el editor con derechos de administrador.

Parece la versión correcta de Visual Studio en mi caso VS2013.

x64

<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\</TargetFrameworkSDKToolsDirectory> 

x 86

<TargetFrameworkSDKToolsDirectory>C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\</TargetFrameworkSDKToolsDirectory> 

y funciona! Puedo compilar mi proyecto.

2

Una solución para todo esto [incluida la instalación del SDK, etc.] es deshabilitar la opción Precompilar al publicar, que requiere que AspNetMerge esté presente en , incluso si no especifica que desea combinar cosas en la salida final.

que iba a grandes esfuerzos para encontrar la manera de apagarlo, estudiando detenidamente el diálogo de opciones y la lectura del manual de fácil confirmar lo tenía apagado para las edades sólo para darse cuenta que era la casilla de verificación en el exterior:

enter image description here

desactivar dicha casilla se obtienen los siguientes cambios en el .pubxml:

- <PrecompileBeforePublish>True</PrecompileBeforePublish> 
- <EnableUpdateable>True</EnableUpdateable> 
- <DebugSymbols>False</DebugSymbols> 
- <WDPMergeOption>DonotMerge</WDPMergeOption> 

que funcionó para mí.

NB que es sin embargo crítico tener as covered here tanto el Web (que en silencio hacer Publishing través /p:DeployOnBuild inerte) y la WebApplications (lo que dará un error del compilador) subcarpetas presente bajo %Program Files (x86)%\MSBuild\Microsoft\VisualStudio\v14.0 (suponiendo Visual Studio 2015 utillaje) para publicar con éxito generar paquetes

Cuestiones relacionadas