Falta MS-Build 2017 "Microsoft.WebApplication.targets"

85

Estoy intentando actualizar nuestro servidor de compilación (jenkins) de Visual Studio 2015 a 2017. Estamos compilando a través de MS-Build. Descargué e instalé las herramientas de MS-Buld como se describe en esta respuesta . Si compilo mis proyectos, aparece un error que Microsoft.WebApplication.targetsno se encontró.

Error detallado:

 error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets"

Realicé una búsqueda en el directorio de MS-Build:

PS C:\Program Files (x86)\MSBuild> dir -Recurse -Filter "Microsoft.WebApplication.targets"


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       11.01.2012     00:23          19654 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       22.07.2013     01:25          19995 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       06.07.2015     21:55          20118 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       22.07.2013     01:25          19995 Microsoft.WebApplication.targets

Como se puede ver, el archivo existe para las versiones antiguas del compilador, pero falta para la v15.0.

También instalé Visual Studio 2017 en el servidor de compilación. El proyecto se compila con éxito si compilo con Visual Studio 2017.

¿Alguna sugerencia de cómo resolver este problema? Una posible solución es generar un enlace simbólico desde el C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationspunto a los archivos antiguos v14.0 (ubicados debajo C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications).

Gracias

Moerwald
fuente
1
Tuve este problema con un proyecto usando VS 2019. Cómo lo solucioné abriendo el archivo csproj, identificando la línea <Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets "/> y reemplazar con <Import Project =" $ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v $ (VisualStudioVersion) \ WebApplications \ Microsoft.WebApplication.targets "/>
tmutton

Respuestas:

124

Parece que se echa en falta la carga de trabajo "Web herramientas de desarrollo construir": Microsoft.VisualStudio.Workload.WebBuildTools.

Puede instalarlo descargando el instalador de herramientas de compilación desde aquí (VS2017) o aquí (VS2019) y luego ejecutándolo

vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools

o abriendo vs_buildtools.exey seleccionando el componente "Herramientas de construcción de desarrollo web" en la GUI:

captura de pantalla de GUI

Martin Ullrich
fuente
3
¿Cómo puedo ejecutar este comando? Está dando 'vs_buildtools.exe' no se reconoce como un error de comando interno o externo en la herramienta de desarrollo 2017
Developerzzz
26
Si ya ha descargado el instalador "Build Tools for Visual Studio 2017" ( visualstudio.com/thank-you-downloading-visual-studio/… ), puede iniciar ese instalador, pulsar Modificar y marcar la casilla "Tareas de compilación de desarrollo web "casilla de verificación del módulo de carga de trabajo. Luego haga clic en el botón Modificar y deje que el instalador finalice.
Spiralis
Sí, necesita usar la línea de comando anterior para instalar. No puede encontrarlo en la GUI.
sky91
4
He instalado Build Tools for Visual Studio 2017con Web development build tasksel enlace que sin embargo todavía no crea C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsfolder..i también no veo vs_buildtools.exe..i buscado todo el `c:`
LP13
1
gracias ... parece que desde VS 2017 el valor de $(MSBuildExtensionsPath)se cambió a C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild stackoverflow.com/questions/47077150/… eso
LP13
88

La respuesta aceptada anterior es técnicamente correcta, simplemente incompleta, un poco confusa, al menos para mí, y necesitaba un paso adicional para que Visual Build Professional funcionara.

  1. vs_buildtools.exe técnicamente no existe. Tuve que crear una pregunta preguntando dónde estaba ese archivo. No era obvio que vs_buildtools.exe es vs_buildtools _ *******. Exe y es el programa de instalación real. Además, el "-add ***" mencionado anteriormente es solo una abreviatura. Uno puede ir a la GUI y verificar ambas tareas del flujo de trabajo. Eso hace lo mismo. Terminé teniendo el archivo vs_buildtools, aunque no lo necesitaba.

  2. VSB Pro todavía no construyó mi proyecto. Me arrojaron el mismo error anterior. El ingrediente secreto era simplemente copiar la WebApplicationscarpeta en la C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0que C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0. Luego reconstruí el proyecto y todo estuvo bien. Coloqué el archivo WebApplication.targets en la ubicación esperada.

Por qué Microsoft no pudo haber hecho eso, se me escapa. Además, por qué la instalación separada. VS17 instala una enorme cantidad de cosas. Build Tools está implícito, como siempre. Lo que sea.

Estoy publicando esta respuesta porque espero que ayude a otros. Caí en la trampa y perdí bastante tiempo con mi proyecto sin construir. Espero que esta respuesta aclare un poco las cosas.

Sarah Weinberger
fuente
4
Confirmó que "Build Tools for Visual Studio 2017" copia los destinos en C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v15.0 mientras que msbuild intenta ubicar los destinos en C : \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0, así que tengo que copiar las carpetas. Aparentemente, el primero es usado por IDE y el segundo es usado por msbuild independiente. Extraño.
ZZZ
1
No debe copiar nada manualmente. vs_buildtools.exe es solo el instalador de Visual Studio. Le ayuda a instalar Build Tools o Visual Studio. Para ambos, puede instalar diferentes cargas de trabajo y componentes. Si desea instalar la carga de trabajo para Visual Studio, debe hacer clic en el botón "Modificar". De esta forma, puede instalar los componentes necesarios.
Vladimir Serykh
2
Claro, pero el problema es que el instalador de Visual Studio no parece colocar de manera confiable la carpeta WebApplications en las dos ubicaciones que necesita. La copia manual, como sugirió Sarah, es la única forma en que he logrado que las compilaciones funcionen de manera confiable en mi máquina de desarrollo.
Bart Read
21

Tuve un problema similar después de haber actualizado de Visual Studio 2015 a 2017. Cuando intento cargar el proyecto de la aplicación web, me arrojó el mensaje de error:

No se encontró el proyecto importado "C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets". Además, intenté encontrar "WebApplications \ Microsoft.WebApplication.targets" en la (s) ruta (s) de búsqueda alternativa para $ (VSToolsPath) - "C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0". Estas rutas de búsqueda se definen en "C: \ Users \ xxx \ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_558e146f \ devenv.exe.config". Confirme que la ruta en la declaración sea correcta y que el archivo exista en el disco en una de las rutas de búsqueda.

La solución a este error que encontré aquí .

En mi caso, el archivo .csproj contenía las siguientes líneas:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0</VSToolsPath>
</PropertyGroup>

Después de reemplazar el v14.0by v$(VisualStudioVersion)en la VSToolPathetiqueta, el proyecto podría cargarse.

También reemplacé el v14.0by v10.0en la VisualStudioVersionetiqueta, como muestra la solución en el enlace anterior. Pero para mí también funcionó dejándolo en 14.0.

Así es como deberían verse estas líneas al final:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>

Si no tiene estas líneas en su .csproj, entonces debe agregarlas manualmente justo ANTES de esta línea:

<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" />

En mi caso (mensaje de error ligeramente diferente pero el mismo problema) fue esta línea:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

Parece que los proyectos creados con versiones de Visual Studio desde 2011 contienen las líneas con la VSToolsPathredefinición, mientras que los archivos más antiguos no. Visual Studio nunca los agregó automáticamente al actualizar a una versión más reciente de VS, por lo que debe agregarlos si no están allí.

Fuente de esta información: https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (haga clic en Mostrar más comentarios para ver el hilo de discusión completo; desafortunadamente, no puedo vincular directamente a los comentarios en esta sección "más").

Tobias
fuente
11

Es fácil instalar las herramientas de construcción 2017, con la WebBuildToolsopción ya incluida, usando chocolatey . Una vez que lo haya instalado , escriba lo siguiente en un símbolo del sistema de administración:

choco install visualstudio2017buildtools -y

Para VS 2019, es similar:

choco install visualstudio2019buildtools -y
alastairtree
fuente
2
No tiene que instalar una versión específica, puede instalarla de esta manera usando Chocolatey e incorporar la respuesta aceptada:cinst visualstudio2017buildtools -params '--add Microsoft.VisualStudio.Workload.WebBuildTools' -y ; cinst microsoft-build-tools -y
brianary
8

Copiar WebApplicationscarpeta de

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0

a

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0

O en su script de construcción agregue la siguiente línea antes de compilar

Copy-Item "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications" "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications" -Recurse -Force

Asegúrese de ejecutarlo con permisos elevados

adeel41
fuente
3

¿Cómo crear la aplicación VS 2017 pro, asp.net MVC y compilarla con Jenkins?

use vs 2017 pro tanto en la máquina de desarrollo como en el servidor de compilación

Compruebe que VisualStudio esté configurado en 15
Importar proyecto = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v15.0 \ WebApplications \ Microsoft.WebApplication.targets" Condición = "falso"

configure la herramienta msbuild
en C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ MSBuild.exe en el administrador de configuración global de jenkins

Con jenkins, ejecute el comando de Windows por lotes:
retore nugets: "C: \ Archivos de programa (x86) \ Jenkins \ tools \ nuget \ NuGet.exe" restaurar "C: \ Archivos de programa (x86) \ Jenkins \ workspace \ theapp_build \ theapp. sln "

Con jenkins, ejecute el lote de comandos de Windows:
Archivo de compilación de MSBuild: theapp.sln
Argumentos de la línea de comandos: / nologo / t: restore / t: rebuild / p: Configuration = "Debug" /p:VisualStudioVersion=15.0

Viorel Banesaru
fuente
2

Para VS 2019, arreglé esto copiando:

C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v16.0

a

C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio

mariocatch
fuente
Cómo obtener C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 para VS2019
somegeek
-1

Solo uso Visual Studio Installer para actualizar Visual Studio Community 2017 , luego el problema está resuelto.

Peter Chen
fuente