55 votes

MS-Build 2017 "Microsoft.WebApplication.targets" est manquant

Je suis en train de mettre à jour notre buildserver (jenkins) à partir de Visual Studio 2015 à 2017. Nous construisons via MS-Construire. J'ai téléchargé et installé MS-Buld les outils décrits dans cette réponse. Si je compile mes projets, j'obtiens une erreur que Microsoft.WebApplication.targets n'a pas été trouvé.

Détaillée de l'erreur:

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

J'ai effectué une recherche dans le MS-répertoire de construction:

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

Comme on peut le voir le fichier existe pour les anciennes versions de compilateur, mais pour v15.0 il est manquant.

J'ai aussi installé Visual Studio 2017 sur la version serveur. Le projet réussit à construire si je compile avec Visual Studio 2017.

Toutes les conseils sur la façon de résoudre ce problème? Une solution possible est de créer un lien symbolique à partir d' C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications point à l'ancien v14.0 fichiers (qui se trouve dans C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications).

Thx

76voto

Martin Ullrich Points 5894

Ressemble vous êtes absent la charge de travail de "développement Web, les outils de génération": Microsoft.VisualStudio.Workload.WebBuildTools.

Vous pouvez l'installer en téléchargeant les outils de construction de programme d'installation à partir d' ici, puis en exécutant

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

ou l'ouverture d' vs_buildtools.exe et en sélectionnant le "développement Web, outils de construction de" composant de l'interface graphique:

screenshot from GUI

68voto

Sarah Weinberger Points 2124

L'on a accepté la réponse ci-dessus est techniquement correcte, juste incomplet, un peu déroutant, au moins pour moi, et avait besoin d'une étape supplémentaire pour obtenir Visual Construire de travail.

  1. vs_buildtools.exe n'est techniquement pas exister. J'ai dû créer une question vous demandant où le fichier a été. Il n'est pas évident que vs_buildtools.exe est vs_buildtools_*******.exe et est le programme d'installation. En plus le " la "-ajouter ***" mentionné ci-dessus est juste une abréviation. On peut aller à la GUI et vérifier les deux tâches de flux de travail. Qui fait la même chose. J'ai fini par avoir la vs_buildtools fichier, mais pas dans le besoin.

  2. VSB Pro n'a pas encore de construire mon projet. Je me suis jeté le même message d'erreur ci-dessus. Le secret de la sauce était simplement de copier l' WebApplicationsle dossier en C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0 de C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0. J'ai ensuite reconstruit le projet et tout était bien. J'ai placé la WebApplication.les objectifs de fichier à l'emplacement prévu.

Pourquoi Microsoft n'aurait pas fait c'est au delà de moi. Aussi, pourquoi l'installation séparée. VS17 installe une énorme quantité de choses. Construire des Outils est implicite, comme toujours. Quoi que ce soit.

Je suis l'affichage de cette réponse que j'espère que ça aidera d'autres personnes. Je suis tombé dans le piège et a perdu un peu de temps avec mon projet et non de la construction. J'espère que cette réponse précise un peu les choses.

13voto

Tobias Points 348

J'ai eu un problème similaire après avoir mis à jour à partir de Visual Studio 2015 à 2017. Lorsque j'essaie de charger le projet d'application web, il m'avaient envoyé le message d'erreur:

Le projet importé "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" n'a pas été trouvé. Aussi, essayé de trouver des "Applications\Microsoft.WebApplication.cibles" dans la reprise du chemin de recherche(s) pour la somme de(VSToolsPath) - "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0" . Ces chemins de recherche sont définis dans le "C:\Users\xxx\AppData\Local\Microsoft\VisualStudio\15.0_558e146f\devenv.exe.config". Confirmer que le chemin d'accès dans la déclaration est correcte, et que le fichier existe sur le disque dans l'un des chemins de la recherche.

La solution à cette erreur, j'ai trouvé ici.

Dans mon cas, l' .csproj fichier contenait les lignes suivantes:

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

Après le remplacement de la v14.0 par v$(VisualStudioVersion) dans la VSToolPath balise, le projet a pu être chargé.

J'ai aussi remplacé l' v14.0 par v10.0 dans la VisualStudioVersion balise, comme la solution dans le lien ci-dessus montre. Mais pour moi, il a également travaillé en le laissant à 14.0.

Voici comment ces lignes devrait ressembler à la fin:

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

Si vous n'avez pas ces lignes dans votre .csproj, alors vous devez les ajouter manuellement juste AVANT cette ligne:

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

Dans mon cas (un peu différent de message d'erreur, mais même problème) c'est cette ligne:

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

Il semble que les projets créés avec des versions de Visual Studio depuis 2011 contiennent les lignes avec l' VSToolsPath redéfinition, tandis que les fichiers n'ont pas. Visual Studio jamais ajouté automatiquement lors de la mise à niveau vers une version plus récente VS version, qui est pourquoi vous devez les ajouter si ils ne sont pas là.

Source de cette information: https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (cliquez sur Afficher plus de commentaires pour voir le fil de discussion - malheureusement, je ne peut pas directement de lien vers les commentaires de cet "en plus" de la section.)

8voto

alastairtree Points 76

Il est facile d'installer les outils de construction de 2017, avec l'option WebBuildTools déjà incluse, à l'aide de chocolatey . Une fois que vous l'avez installé , tapez ce qui suit dans une invite de commande de l'administrateur:

 choco install visualstudio2017buildtools -y
 

Pour VS 2019, c'est similaire:

 choco install visualstudio2019buildtools -y
 

7voto

adeel41 Points 569

Copier le dossier WebApplications partir de

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

à

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

Ou bien, dans votre script de construction, ajoutez la ligne suivante avant la compilation

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

Assurez-vous de l'exécuter avec des autorisations élevées

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: