No se encontró Microsoft.WebApplication.targets en el servidor de compilación. ¿Cuál es tu solución?
Al intentar compilar mi proyecto en el servidor de compilación, aparece el siguiente error:
Microsoft (R) Build Engine Version 4.0.30319.1
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
Resolví este problema hace unos meses instalando Visual Studio 2010 en Build Server. Pero ahora estoy configurando un nuevo servidor desde cero y quiero saber si existe alguna solución mejor para resolver este problema.
Para responder al título de la pregunta (pero no a la pregunta sobre el resultado que obtiene):
Copiar la siguiente carpeta desde su máquina de desarrollo a su servidor de compilación soluciona este problema si solo se trata de aplicaciones web
C:\Archivos de programa (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications
Elimine x86 según cómo se rompa su compilación. Si tiene otros tipos de proyectos, probablemente necesitará copiar toda la carpeta msbuild.
La solución sería instalar paquetes redistribuibles en el agente del servidor de compilación. Se puede lograr de varias maneras, de las cuales 3 se describen a continuación. Elija uno que más le convenga.
Usar el instalador con UI
esta es la respuesta original
Ahora mismo, en 2017, puede instalar redistribuciones de aplicaciones web con MSBuildTools. Simplemente vaya a esta página que descargará las herramientas de MSBuild 2017 y, durante la instalación, haga clic Web development build tools
para instalar también estos objetivos:
Esto conducirá a la instalación de bibliotecas faltantes de C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications
forma predeterminada
Usar línea de comando
descargo de responsabilidad No he probado ninguna de las siguientes propuestas
Como sugirieron @PaulHicks y @WaiHaLee en los comentarios, también se puede instalar en modo sin cabeza (sin interfaz de usuario) desde CLI, lo que en realidad podría ser una forma preferible de resolver el problema al eliminar el servidor.
- Solución A: usar el administrador de paquetes (choco)
choco install visualstudio2017-workload-webbuildtools
Solución B: ejecute el instalador en modo sin cabeza
Tenga en cuenta que este es el mismo instalador que se propuso utilizar en la respuesta original.
vs_BuildTools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools --passive
No se admite la creación y publicación de WAP si VS no está instalado. Dicho esto, si realmente no desea instalar VS, deberá copiar todos los archivos en %ProgramFiles32%\MSBuild\Microsoft\
.
También deberá instalar la herramienta de implementación web . Creo que eso es todo.
UPD: a partir de VS2017, hay una carga de trabajo en Build Tools que elimina este problema por completo. Consulte la respuesta de @SOReader .
Si prefiere no modificar nada en el servidor de compilación y aún desea que el proyecto se construya fuera del control de código fuente, podría ser una buena idea poner los archivos binarios necesarios bajo control de código fuente. Deberá modificar la sección de importaciones en su archivo de proyecto para que se vea así:
<Import Project="$(SolutionDir)\BuildTargets\WebApplications\Microsoft.WebApplication.targets" />
<Import Condition="false" Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
La primera línea es la importación real desde la nueva ubicación relativa al directorio de la solución. La segunda es una versión desactivada ( Condition="false"
) de la línea original que permite que Visual Studio siga considerando su proyecto como un proyecto de aplicación web válido (ese es el truco que hace VS 2010 SP1).
No olvide copiar la C:\Program Files (x86)\Microsoft\VisualStudio\v10.0\WebApplications
carpeta BuildTargets
a su control de fuente.
También puede usar el paquete NuGet MSBuild.Microsoft.VisualStudio.Web.targets , hacer referencia a ellos dentro de sus proyectos de Visual Studio y luego cambiar sus referencias como sugiere Andriy K.