msbuild - ver - No se encontró Microsoft.WebApplication.targets, en el servidor de compilación. ¿Cuál es tu solución?
version framework visual studio (18)
Intentar compilar mi proyecto en el servidor de compilación me da 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, con la instalación de Visual Studio 2010 en el Build Server. Pero ahora estoy configurando un nuevo servidor desde cero, y quiero saber si hay alguna solución mejor para resolver este problema.
Agregue dependencia a través de NuGet y establezca un parámetro de compilación
Objetivo: no es necesario realizar cambios / instalaciones para los agentes de compilación
He tomado un enfoque híbrido del enfoque NuGet de Lloyd aquí , que se basó en la solución de dependencias binarias de Andrik.
La razón por la que quiero es poder agregar nuevos agentes de compilación sin tener que configurarlos previamente con elementos como este.
- En una máquina con Visual Studio, abra la solución; Ignora que el proyecto web falla.
- En el administrador de paquetes de NuGet, agregue MSBuild.Microsoft.VisualStudio.Web.targets , como mencionó Lloyd.
- Esto resolverá los binarios a
[solution]/packages/MSBuild.Microsoft.VisualStudio.Web.targets.nn.nnn/tools/VSToolsPath/
- Puedes copiarlos en una carpeta de referencias y cometer,
- O simplemente úsalos donde están. Escogí esto, pero luego tendré que lidiar con el número de versión en la ruta.
- A continuación, en la configuración de compilación de TeamCity, agregue una compilación Paramenter para
env.VSToolsPath
yenv.VSToolsPath
en la carpeta VSToolsPath; Utilicé../packages/MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1/tools/VSToolsPath
Cuando establezca lo que creo que es mejor en términos de mantenimiento y poder activar nuevos agentes de compilación, actualizaré esta publicación.
Al crear en el servidor de compilación / CI, desactive la importación de Microsoft.WebApplication.targets
por completo especificando /p:VSToolsPath=''''
. Esto, esencialmente, hará que la condición de la siguiente línea sea falsa:
<Import Project="$(VSToolsPath)/WebApplications/Microsoft.WebApplication.targets" Condition="''$(VSToolsPath)'' != ''''" />
Así es como se hace en TeamCity:
Arreglé esto agregando
/p:VCTargetsPath="C:/Program Files/MSBuild/Microsoft.Cpp/v4.0/V120"
dentro
Build > Build a Visual Studio project or solution using MSBuild > Command Line Arguments
Basándose en esta publicación aquí , simplemente puede descargar el Paquete redistribuible (integrado) de Microsoft Visual Studio 2010 Shell y los destinos están instalados.
Esto evita la necesidad de instalar Visual Studio en el servidor de compilación.
Acabo de probar esto ahora y puedo verificar que funciona:
Antes de:
error MSB4019: No se encontró el proyecto importado "C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v10.0 / WebApplications / Microsoft.WebApplication.targets". Confirme que la ruta en la declaración es correcta y que el archivo existe en el disco.
Después de la instalación:
[Construye correctamente]
Esta es una solución mucho mejor que instalar Visual Studio en un servidor de compilación, obviamente.
Cualquiera que venga aquí para Visual Studio 2017. Tuve un problema similar y no pude compilar el proyecto después de la actualización a 15.6.1. Tuve que instalar las herramientas de MSBulild pero el error seguía ahí.
Pude solucionar el problema al copiar la carpeta v14.0
de C:/Program Files (x86)/MSBuild/Microsoft/VisualStudio
a la misma carpeta que v15.0
y eso resolvió todos los errores. Así que ahora mi estructura de carpetas se ve a continuación, donde ambas carpetas contienen el mismo contenido.
El último SDK de Windows, como se mencionó anteriormente, además del "Paquete de Microsoft Visual Studio 2010 Shell (Integrado) Redistribuible" para Microsoft.WebApplication.targets y "Microsoft Visual Studio Team System 2008 Database Edition GDR R2" para Microsoft.Data.Schema .SqlTasks.targets debería aliviar la necesidad de instalar Visual Studio 2010. Sin embargo, la instalación de VS 2010 puede ser menos general para descargar y menos trabajo al final.
En este momento, en 2017, puedes instalar redApplication redists con MSBuildTools. Simplemente vaya a esta página que descargará las herramientas de MSBuild 2017 y, mientras realiza la instalación, haga clic en Web development build tools
para instalar estos objetivos también:
Esto conducirá a la instalación de bibliotecas faltantes en C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/MSBuild/Microsoft/VisualStudio/v15.0/WebApplications
de forma predeterminada
Esto es todo lo que necesitas. Sólo 103MB. No instale todo
He encontrado esto en MS Connect :
Sí, necesita instalar Visual Studio 2010 en su máquina de compilación para construir proyectos de base de datos. Hacerlo no requiere una licencia adicional de Visual Studio.
Entonces, esta es la única opción que tengo por ahora.
La construcción y publicación de WAP no se admite si VS no está instalado. Dicho esto, si realmente no desea instalar VS, deberá copiar todos los archivos en %ProgramFiles32%/MSBuild/Microsoft/
.
También necesitarás instalar la herramienta de implementación web . Creo que eso es todo.
Mi solución es una mezcla de varias respuestas aquí.
Revisé el servidor de compilación, y Windows7 / NET4.0 SDK ya estaba instalado, así que encontré la ruta:
C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v9.0 / WebApplications / Microsoft.WebApplication.targets`
Sin embargo, en esta línea:
<Import Project = "$ (MSBuildExtensionsPath) / Microsoft / VisualStudio / v9.0 / WebApplications / Microsoft.WebApplication.targets" />
$ (MSBuildExtensionsPath) se expande a C: / Archivos de programa / MSBuild que no tiene la ruta.
Por lo tanto, lo que hice fue crear un enlace simbólico, usando este comando:
mklink / J "C: / Archivos de programa / MSBuild / Microsoft / VisualStudio" "C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio"
De esta manera, $ (MSBuildExtensionsPath) se expande a una ruta válida, y no se necesitan cambios en la aplicación, solo en el servidor de compilación (tal vez se podría crear el enlace simbólico en cada compilación, para asegurarse de que este paso no se pierda y esté "documentado ").
Parece que la nueva versión de msbuild no viene con Microsoft.WebApplication.targets. Para arreglarlo necesitas actualizar tu archivo csproj como tal:
1) Edite la aplicación web csproj (clic derecho). Encuentre la sección en el csproj hacia la parte inferior concerniente a las herramientas de construcción. Debería parecer así.
<PropertyGroup>
<VisualStudioVersion Condition="''$(VisualStudioVersion)'' == ''''">10.0</VisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)/Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)/WebApplications/Microsoft.WebApplication.targets" Condition="''$(VSToolsPath)'' != ''''" />
<Import Project="$(MSBuildExtensionsPath32)/Microsoft/VisualStudio/v10.0/WebApplications/Microsoft.WebApplication.targets" Condition="false" />
2) Debe agregar una línea VSToolsPath debajo de la etiqueta VisualStudioVersion para que se vea así
<PropertyGroup>
<VisualStudioVersion Condition="''$(VisualStudioVersion)'' == ''''">10.0</VisualStudioVersion>
<!--Add the below line to fix the project loading in VS 2017 -->
<VSToolsPath Condition="''$(VSToolsPath)'' == ''''">$(MSBuildExtensionsPath32)/Microsoft/VisualStudio/v$(VisualStudioVersion)</VSToolsPath>
<!--End -->
</PropertyGroup>
<Import Project="$(MSBuildBinPath)/Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)/WebApplications/Microsoft.WebApplication.targets" Condition="''$(VSToolsPath)'' != ''''" />
<Import Project="$(MSBuildExtensionsPath32)/Microsoft/VisualStudio/v10.0/WebApplications/Microsoft.WebApplication.targets" Condition="false" />
Enlace de referencia: https://alastaircrabtree.com/cannot-open-vs-2015-web-project-in-vs-2017/
Probé un montón de soluciones, pero al final esta respuesta me funcionó: https://.com/a/19826448/431522
Básicamente implica llamar a MSBuild desde el directorio de MSBuild, en lugar del directorio de Visual Studio.
También agregué el directorio de MSBuild a mi ruta, para hacer que los scripts sean más fáciles de codificar.
Si migra Visual Studio 2012 a 2013, abra el archivo de proyecto * .csproj con edior.
y verifique el elemento ToolsVersion de la etiqueta ''Proyecto''.
Cambia su valor de 4.0 a 12.0
Desde
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" ...
A
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="12.0" ...
O si creas con msbuild, simplemente especifica la propiedad VisualStudioVersion
msbuild /p:VisualStudioVersion=12.0
Fuente de la solución
También puede usar el paquete MSBuild.Microsoft.VisualStudio.Web.targets , MSBuild.Microsoft.VisualStudio.Web.targets referencia a ellos en sus proyectos de Visual Studio, luego cambie sus referencias como lo sugiere Andriy K.
UPD: a partir de VS2017, existe una carga de trabajo en Build Tools que elimina este problema por completo. Ver respuesta @SOReader .
Si prefiere no modificar nada en el servidor de compilación y aún desea que el proyecto se genere fuera del control de origen, puede ser una buena idea poner los binarios necesarios bajo el control de origen. Tendrá que modificar la sección de importaciones en su archivo de proyecto para tener este aspecto:
<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 que es 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 aún considere que su proyecto es un Proyecto de aplicación web válido (ese es el truco que VS 2010 SP1 hace por sí mismo).
No olvide copiar la aplicación C:/Program Files (x86)/Microsoft/VisualStudio/v10.0/WebApplications
BuildTargets
en BuildTargets
bajo su control de origen.
Para responder el título de la pregunta (pero no la pregunta sobre el resultado que está obteniendo):
Copiar la siguiente carpeta de su máquina dev a su servidor de compilación corrige esto solo si se trata de aplicaciones web
C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v10.0 / WebApplications
Eliminar x86 de acuerdo a cómo se rompe su construcción. Si tiene otros tipos de proyectos, probablemente necesitará copiar la carpeta msbuild completa.