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 servidor de compilación. Pero ahora estoy configurando un nuevo servidor desde cero, y quiero saber si hay alguna solución mejor para resolver este problema.
<Import Project="..\Packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />
la ruta con$(VSToolsPath)
:<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" />
Respuestas:
Para responder el título de la pregunta (pero no la pregunta sobre el resultado que está obteniendo):
Copiar la siguiente carpeta desde su máquina de desarrollo a su servidor de compilación corrige esto si solo se trata de aplicaciones web
Elimina x86 según cómo se rompa tu compilación. Si tiene otros tipos de proyectos, probablemente necesite copiar toda la carpeta msbuild.
fuente
La creación y publicación de WAP no es compatible si VS no está instalado. Dicho esto, si realmente no desea instalar VS, deberá copiar todos los archivos que se encuentran debajo
%ProgramFiles32%\MSBuild\Microsoft\
.También necesitará instalar la herramienta de implementación web . Creo que eso es todo.
fuente
UPD: a partir de VS2017, existe una carga de trabajo en Build Tools que elimina este problema por completo. Ver la respuesta de @SOReader .
Si prefiere no modificar nada en el servidor de compilación, y aún desea que el proyecto se compile directamente fuera del control de origen, puede ser una buena idea poner los binarios necesarios bajo control de origen. Tendrá que modificar la sección de importaciones en su archivo de proyecto para que se vea así:
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 todavía 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 se olvide de copiar el
C:\Program Files (x86)\Microsoft\VisualStudio\v10.0\WebApplications
deBuildTargets
carpeta bajo el control de código fuente.fuente
En este momento, en 2017, puede instalar redistas de aplicaciones web con MSBuildTools. Simplemente vaya a esta página que descargará MSBuild 2017 Tools 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
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications
por defectofuente
choco install visualstudio2017-workload-webbuildtools
.Microsoft.VisualStudio.Workload.WebBuildTools
se puede instalar a través de la línea de comandos llamandovs_BuildTools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools
. Agregar--passive
para no necesitar intervención del usuario.También puede usar el paquete NuGet MSBuild.Microsoft.VisualStudio.Web.targets , haciendo referencia a ellos dentro de su (s) proyecto (s) de Visual Studio, luego cambie sus referencias como sugiere Andriy K.
fuente
Con base en esta publicación aquí , simplemente puede descargar el paquete redistribuible de Microsoft Visual Studio 2010 Shell (integrado) 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:
Después de la instalación:
[Construye correctamente]
Obviamente, esta es una solución mucho mejor que instalar Visual Studio en un servidor de compilación.
fuente
El último SDK de Windows, como se mencionó anteriormente, además del "Paquete redistribuible (integrado) de Microsoft Visual Studio 2010 Shell" 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 en realidad puede ser menos general para descargar y menos trabajo al final.
fuente
Agregue dependencia a través de NuGet y establezca un parámetro de compilación
Objetivo: no se necesitan cambios / instalaciones para los agentes de compilación
Aquí tomé un enfoque híbrido del enfoque NuGet de Lloyd , que se basó en el solución de dependencias binarias comprometidas de Andrik.
El motivo es que quiero poder agregar nuevos agentes de compilación sin tener que configurarlos previamente con elementos como este.
[solution]\packages\MSBuild.Microsoft.VisualStudio.Web.targets.nn.n.n.n\tools\VSToolsPath\
En la versión 7, hice lo siguiente. Esto puede no haber sido necesario, y en base a los comentarios definitivamente no es necesario ahora. Por favor, vea los comentarios a continuación.
env.VSToolsPath
y configúrelo en la carpeta VSToolsPath; solía..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath
fuente
<Import Project="..\..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.12.0.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />
Al compilar en el servidor de compilación / CI, desactive la importación por
Microsoft.WebApplication.targets
completo especificando/p:VSToolsPath=''
. Esto, esencialmente, hará que la condición de la siguiente línea sea falsa:Así es como se hace en TeamCity:
fuente
Si migra Visual Studio 2012 a 2013, abra el archivo de proyecto * .csproj con edior.
y marque el elemento ToolsVersion de la etiqueta 'Proyecto'.
Cambie su valor de 4.0 a 12.0
Desde
A
O bien, si crea con msbuild, simplemente especifique la propiedad VisualStudioVersion
Fuente de solución
fuente
msbuild /p:Platform=x86 /p:VisualStudioVersion=12.0
Parece que la nueva versión de msbuild no se incluye con Microsoft.WebApplication.targets. Para solucionarlo, debe actualizar su archivo csproj de la siguiente manera:
1) Edite la aplicación web csproj (clic derecho). Encuentre la sección en csproj hacia la parte inferior sobre herramientas de compilación. Debería verse así.
2) Debe agregar una línea VSToolsPath debajo de la etiqueta VisualStudioVersion para que se vea así
Enlace de referencia: https://alastaircrabtree.com/cannot-open-vs-2015-web-project-in-vs-2017/
fuente
Esto es todo lo que necesita. Solo 103MB. No instales todo
fuente
He encontrado esto en MS connect :
Entonces, esta es la única opción que tengo por ahora.
fuente
Mi solución es una mezcla de varias respuestas aquí.
Verifiqué el servidor de compilación y Windows7 / NET4.0 SDK ya estaba instalado, así que encontré la ruta:
Sin embargo, en esta línea:
$ (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:
De esta manera, $ (MSBuildExtensionsPath) se expande a una ruta válida, y no se necesitan cambios en la aplicación en sí, solo en el servidor de compilación (quizás uno podría crear el enlace simbólico en cada compilación, para asegurarse de que este paso no se pierda y esté "documentado ").
fuente
Lo arreglé agregando
/p:VCTargetsPath="C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V120"
a
Build > Build a Visual Studio project or solution using MSBuild > Command Line Arguments
fuente
Probé un montón de soluciones, pero al final esta respuesta funcionó para mí: https://stackoverflow.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 MSBuild a mi ruta, para que los scripts sean más fáciles de codificar.
fuente
Alguien que vino aquí para Visual Studio 2017. Tuve el 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 aún así el error estaba allí.
Pude solucionar el problema copiando la
v14.0
carpeta deC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio
la misma carpetav15.0
y eso resolvió todos los errores. Entonces, la estructura de mi carpeta se ve a continuación, donde ambas carpetas contienen el mismo contenido.fuente
Si está utilizando MSBuild, como en el caso de un servidor de compilación, lo que funcionó para mí es:
Cambia lo siguiente:
a:
Mi comando Msbuild es:
*"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" solution.sln /p:Configuration=Debug /p:Platform="Any CPU"*
Espero que esto ayude a alguien.
fuente
En caso de que si está tratando de implementar un proyecto usando VSTS, el problema podría estar relacionado con la opción "Contenedor de Windows alojado" en lugar de "VS2017 alojado" (o 18, etc.):
fuente
C:> msbuild "C: \\ DotnetCi.sln" / p: Configuration = Release / p: UseWPP_CopyWebApplication = true / p: PipelineDependsOnBuild = false
fuente
Estaba teniendo este problema al construir un proyecto de SQL Server en una tubería de CI / CD. De hecho, también lo tenía localmente y no pude resolverlo.
Lo que funcionó para mí fue usar un SDK de MSBuild , capaz de producir un paquete de aplicación de nivel de datos de SQL Server (
.dacpac
) a partir de un conjunto de scripts SQL, lo que implica crear un nuevo proyecto. Pero quería mantener el proyecto de SQL Server, para poder vincularlo a la base de datos en vivo a través del Explorador de objetos de SQL Server en Visual Studio. Tomé los siguientes pasos para tener esto en funcionamiento:.sql
scripts de base de datos.Establezca el contenido de la
.csproj
siguiente manera:Elegí Sql140 como la versión de SQL Server porque estoy usando SQL Server 2019. Verifique esta respuesta para averiguar la asignación a la versión que está usando.
Ignore el proyecto de SQL Server en la compilación, de modo que deje de romperse localmente (se compila en Visual Studio, pero falla en el código VS).
Ahora solo tenemos que asegurarnos de que los
.sql
archivos están dentro del proyecto SDK cuando se construye. Lo logré con una rutina simple de PowerShell en la tubería de CI / CD que copiaría los archivos del proyecto SQL Server al proyecto SDK:PD: los archivos deben estar físicamente en el proyecto SDK, ya sea en la raíz o en alguna carpeta, por lo que los enlaces a los
.sdk
archivos en el proyecto SQL Server no funcionarán. En teoría, debería ser posible copiar estos archivos con una condición previa a la compilación, pero por alguna oscura razón, esto no funcionaba para mí. Intenté también tener los.sql
archivos en el proyecto SDK y vincularlos al proyecto de SQL Server, pero eso rompería fácilmente el enlace con el Explorador de objetos de SQL Server, por lo que decidí eliminar esto también.fuente