Essayer de construire mon projet sur le serveur de build me donne l'erreur suivante:
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.
J'ai résolu ce problème il y a quelques mois, en installant Visual Studio 2010 sur le serveur de build. Mais maintenant, je configure un nouveau serveur à partir de zéro, et je veux savoir s'il existe une meilleure solution pour résoudre ce problème.
<Import Project="..\Packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />
le chemin par$(VSToolsPath)
:<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" />
Réponses:
Pour répondre au titre de la question (mais pas à la question sur la sortie que vous obtenez):
La copie du dossier suivant de votre machine de développement vers votre serveur de build résout ce problème s'il ne s'agit que d'applications Web
Supprimez x86 en fonction de la rupture de votre build. Si vous avez d'autres types de projets, vous devrez probablement copier l'intégralité du dossier msbuild.
la source
La création et la publication de WAP ne sont pas prises en charge si VS n'est pas installé. Cela dit, si vous ne voulez vraiment pas installer VS, vous devrez copier tous les fichiers sous
%ProgramFiles32%\MSBuild\Microsoft\
.Vous devrez également installer l' outil de déploiement Web . Je pense que c'est ça.
la source
UPD: à partir de VS2017, il y a une charge de travail dans Build Tools qui élimine complètement ce problème. Voir la réponse @SOReader .
Si vous préférez ne rien modifier sur le serveur de génération et que vous souhaitez toujours que le projet soit généré hors du contrôle de code source, il peut être judicieux de placer les fichiers binaires requis sous contrôle de code source. Vous devrez modifier la section des importations dans votre fichier de projet pour ressembler à ceci:
La première ligne est l'importation réelle du nouvel emplacement par rapport au répertoire de la solution. Le second est une version désactivée (
Condition="false"
) de la ligne d'origine qui permet à Visual Studio de toujours considérer votre projet comme un projet d'application Web valide (c'est l'astuce que VS 2010 SP1 fait lui-même).N'oubliez pas de copier le dossier
C:\Program Files (x86)\Microsoft\VisualStudio\v10.0\WebApplications
toBuildTargets
sous votre contrôle de source.la source
À l'heure actuelle, en 2017, vous pouvez installer les listes d'applications Web avec MSBuildTools. Rendez-vous simplement sur cette page qui téléchargera les outils MSBuild 2017 et pendant l'installation, cliquez
Web development build tools
pour obtenir ces cibles également:Cela conduira à l'installation de bibliothèques manquantes
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications
par défautla source
choco install visualstudio2017-workload-webbuildtools
.Microsoft.VisualStudio.Workload.WebBuildTools
peut être installé via la ligne de commande en appelantvs_BuildTools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools
. Ajoutez--passive
à ne pas avoir besoin de l'intervention de l'utilisateur.Vous pouvez également utiliser le package NuGet MSBuild.Microsoft.VisualStudio.Web.targets , en les référençant dans vos projets Visual Studio, puis modifier vos références comme Andriy K le suggère.
la source
Sur la base de cet article, vous pouvez simplement télécharger le package redistribuable Microsoft Visual Studio 2010 Shell (intégré) et les cibles sont installées.
Cela évite d'avoir à installer Visual Studio sur le serveur de génération.
Je viens de l'essayer maintenant et je peux vérifier que cela fonctionne:
Avant:
Après l'installation:
[Construit correctement]
Évidemment, c'est une bien meilleure solution que d'installer Visual Studio sur un serveur de build.
la source
Le dernier SDK Windows, comme mentionné ci-dessus, en plus du «package redistribuable Microsoft Visual Studio 2010 Shell (intégré)» pour Microsoft.WebApplication.targets et «Microsoft Visual Studio Team System 2008 Database Edition GDR R2» pour Microsoft.Data.Schema .SqlTasks.targets devrait réduire la nécessité d'installer Visual Studio 2010. Cependant, l'installation de VS 2010 peut être en fait moins globale à télécharger et moins de travail à la fin.
la source
Ajouter une dépendance via NuGet et définir un paramètre de construction
Objectif: aucune modification / installation nécessaire aux agents de build
J'ai adopté une approche hybride de l' approche NuGet de Lloyd ici , qui était basée sur la solution de dépendances binaires de validation d'Andrik.
La raison pour laquelle je veux pouvoir ajouter de nouveaux agents de build sans avoir à les préconfigurer avec des éléments tels que celui-ci.
[solution]\packages\MSBuild.Microsoft.VisualStudio.Web.targets.nn.n.n.n\tools\VSToolsPath\
Dans la version 7, j'ai fait ce qui suit. Cela n'a peut-être pas été nécessaire, et sur la base des commentaires, il n'est certainement pas nécessaire maintenant. Veuillez consulter les commentaires ci-dessous.
env.VSToolsPath
et définissez-le dans le dossier VSToolsPath; j'ai utilisé..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath
la source
<Import Project="..\..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.12.0.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />
Lorsque vous construisez sur le serveur build / CI, désactivez complètement l'importation
Microsoft.WebApplication.targets
en spécifiant/p:VSToolsPath=''
. Cela rendra essentiellement la condition de la ligne suivante fausse:Voici comment cela se fait dans TeamCity:
la source
Si vous migrez Visual Studio 2012 vers 2013, ouvrez le fichier de projet * .csproj avec edior.
et vérifiez l'élément ToolsVersion de la balise «Project».
Changer sa valeur de 4,0 à 12,0
De
À
Ou si vous construisez avec msbuild, spécifiez simplement la propriété VisualStudioVersion
Source de la solution
la source
msbuild /p:Platform=x86 /p:VisualStudioVersion=12.0
Il semble que la nouvelle version de msbuild ne soit pas livrée avec Microsoft.WebApplication.targets. Pour résoudre ce problème, vous devez mettre à jour votre fichier csproj comme suit:
1) Modifiez l'application web csproj (clic droit). Trouvez la section dans le csproj vers le bas concernant les outils de construction. Cela devrait ressembler à ça.
2) Vous devez ajouter une ligne VSToolsPath sous la balise VisualStudioVersion pour qu'elle ressemble à ceci
Lien de référence: https://alastaircrabtree.com/cannot-open-vs-2015-web-project-in-vs-2017/
la source
C'est tout ce dont vous avez besoin. Seulement 103 Mo. N'installez pas tout
la source
J'ai trouvé cela sur MS connect :
Donc, c'est la seule option que j'ai pour l'instant.
la source
Ma solution est un mélange de plusieurs réponses ici.
J'ai vérifié le serveur de build et le SDK Windows7 / NET4.0 était déjà installé, j'ai donc trouvé le chemin:
Cependant, sur cette ligne:
$ (MSBuildExtensionsPath) se développe en C: \ Program Files \ MSBuild qui n'a pas le chemin.
Par conséquent, j'ai créé un lien symbolique à l'aide de cette commande:
De cette façon, $ (MSBuildExtensionsPath) se développe en un chemin valide, et aucune modification n'est nécessaire dans l'application elle-même, uniquement dans le serveur de build (peut-être que l'on pourrait créer le lien symbolique à chaque build, pour s'assurer que cette étape n'est pas perdue et est "documentée" ").
la source
Je fixe en ajoutant
/p:VCTargetsPath="C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V120"
dans
Build > Build a Visual Studio project or solution using MSBuild > Command Line Arguments
la source
J'ai essayé un tas de solutions, mais à la fin cette réponse a fonctionné pour moi: https://stackoverflow.com/a/19826448/431522
Cela implique essentiellement d'appeler MSBuild à partir du répertoire MSBuild, au lieu du répertoire Visual Studio.
J'ai également ajouté le répertoire MSBuild à mon chemin, pour rendre les scripts plus faciles à coder.
la source
Quiconque vient ici pour Visual Studio 2017. J'ai eu le même problème et je n'ai pas pu compiler le projet après la mise à jour vers 15.6.1. J'ai dû installer les outils MSBulild mais l'erreur était toujours là.
J'ai pu résoudre le problème en copiant le
v14.0
dossierC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio
dans le même dossier quev15.0
et cela a résolu toutes les erreurs. Alors maintenant, ma structure de dossiers ressemble à ci-dessous, où les deux dossiers contiennent le même contenu.la source
Si vous utilisez MSBuild, comme dans le cas d'un serveur de build, ce qui a fonctionné pour moi est:
Modifiez les éléments suivants:
à:
Ma commande Msbuild est:
*"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" solution.sln /p:Configuration=Debug /p:Platform="Any CPU"*
J'espère que cela aide quelqu'un.
la source
Si vous essayez de déployer un projet à l'aide de VSTS, le problème peut être lié à la vérification de l'option "Hosted Windows Container" au lieu de "Hosted VS2017" (ou 18, etc.):
la source
C:> msbuild "C: \\ DotnetCi.sln" / p: Configuration = Release / p: UseWPP_CopyWebApplication = true / p: PipelineDependsOnBuild = false
la source
J'avais ce problème lors de la construction d'un projet SQL Server sur un pipeline CI / CD. En fait, je l'avais aussi sur place et je n'ai pas réussi à le résoudre.
Ce qui a fonctionné pour moi, c'était d'utiliser un SDK MSBuild , capable de produire un package d'application de niveau données SQL Server (
.dacpac
) à partir d'un ensemble de scripts SQL, ce qui implique la création d'un nouveau projet. Mais je voulais conserver le projet SQL Server, afin de pouvoir le lier à la base de données en direct via SQL Server Object Explorer sur Visual Studio. J'ai pris les mesures suivantes pour que cela soit opérationnel:.sql
scripts de base de données.Définissez le contenu de la
.csproj
manière suivante:J'ai choisi SQL140 comme version de SQL Server car j'utilise SQL Server 2019. Vérifiez cette réponse pour connaître le mappage avec la version que vous utilisez.
Ignorez le projet SQL Server lors de la génération, afin qu'il cesse de se rompre localement (il s'appuie sur Visual Studio, mais il échoue sur VS Code).
Il ne nous reste plus qu'à nous assurer que les
.sql
fichiers sont à l'intérieur du projet SDK lors de sa construction. J'ai atteint cet objectif avec une routine PowerShell simple sur le pipeline CI / CD qui copiera les fichiers du projet SQL Server dans le projet SDK:PS: Les fichiers doivent être physiquement dans le projet SDK, à la racine ou dans un dossier, donc les liens vers les
.sdk
fichiers dans le projet SQL Server ne fonctionneront pas. En théorie, il devrait être possible de copier ces fichiers avec une condition de pré-génération, mais pour une raison obscure, cela ne fonctionnait pas pour moi. J'ai également essayé d'avoir les.sql
fichiers sur le projet SDK et de les lier au projet SQL Server, mais cela romprait facilement le lien avec l'Explorateur d'objets SQL Server, j'ai donc décidé de supprimer cela également.la source