web-dev-qa-db-fra.com

Syntaxe d'invocation de méthode statique non valide: "[MSBuild] :: IsRunningFromVisualStudio ()"

Après la mise à niveau vers Visual Studio 2017 15.5, aucun de mes projets ne se chargera correctement. Tous sont marqués comme indisponibles.

J'obtiens l'erreur suivante pour chaque projet:

erreur: syntaxe d'invocation de méthode statique non valide: "[MSBuild] :: IsRunningFromVisualStudio ()". La méthode "[MSBuild] :: IsRunningFromVisualStudio" est introuvable. L'invocation de méthode statique doit être de la forme: $ ([FullTypeName] :: Method ()), par ex. $ ([System.IO.Path] :: Combine (a, b)). C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets

Le projet de rechargement génère cette erreur Invite: enter image description here

L'ajout de nouveaux projets génère cette erreur

enter image description here

22
mortenma71

1. Fermez toutes les instances en cours d'exécution de Visual Studio 2017

2. Lancer (en tant qu'administrateur) "Prompt Command Command for VS 2017"

. Tapez les commandes suivantes (remplacez Professional par votre édition, Enterprise ou Community, ou ajustez le chemin d'accès en conséquence):

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Framework.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Engine.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Conversion.Core.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Tasks.Core.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Utilities.Core.dll"

4. Redémarrez Visual Studio 2017

25
Yuriy Oleynik

Il semble d'après les réponses à ce problème sur github qu'il est souvent causé par le fait d'avoir une ancienne version de MSBuild dans le GAC. Celui-ci sera ensuite utilisé de préférence à la version fournie avec la version mise à jour de VS.

La solution consiste à supprimer l'ancienne version de Microsoft.Build du gac.

  1. Trouvez les versions gac'd:

    gacutil /l | findstr Microsoft.Build

  2. Recherchez l'une des versions 15.x.x.x, puis supprimez-les:

    gacutil /u "Microsoft.Build, Version=15.{version_found}"

  3. Redémarrez Visual Studio

Il peut également être nécessaire de supprimer les assemblys associés Microsoft.Build.Utilities.Core, Microsoft.Build.Framework et Microsoft.Build.Tasks.Core de cette version.

0
nik

Après avoir installé la dernière version de Visual Studio via le programme de mise à jour, j'ai reçu les mêmes messages d'erreur.

Le problème a été résolu, au moins dans mon cas, en redémarrant après l'installation de la mise à jour de Visual Studio.

0
Marcus Krahl

J'ai eu ce problème avec Visual Studio 2017 sur un PC Windows 7 sur un réseau d'entreprise. J'ai essayé de résoudre le problème de la manière suivante:

  • redémarrer l'ordinateur/Visual Studio plusieurs fois (comme mentionné par une réponse ici).
  • mise à niveau vers la dernière version de Visual Studio trouvée dans "Extensions et mises à jour"
  • Utilisation de l'option "Réparer" dans le programme d'installation.
  • Désinstallez-le complètement en désinstallant le "Visual Studio Installer" (Panneau de configuration → Ajouter supprimer des programmes), puis en le réinstallant.

J'ai remarqué que sur l'ordinateur d'un collègue, sur lequel VS2017 n'avait jamais été installé, lorsque j'ai installé VS2017 Community Edition version 15.5, il n'y avait aucun problème.

À ce stade, je dois admettre la défaite. La seule solution simple est de remplacer la ligne dans le fichier:

  • C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets

Il y a une ligne vers la fin du fichier:

<NuGetRestoreTargets Condition="'$(NuGetRestoreTargets)'=='' and '$([MSBuild]::IsRunningFromVisualStudio())'=='true'">$(MSBuildToolsPath32)\..\..\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.targets</NuGetRestoreTargets>

remplacez simplement la $([MSBuild]::IsRunningFromVisualStudio()) par true:

<NuGetRestoreTargets Condition="'$(NuGetRestoreTargets)'=='' and 'true'=='true'">$(MSBuildToolsPath32)\..\..\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.targets</NuGetRestoreTargets>

cependant cela ne permet que le chargement des projets - vous ne pouvez pas l'utiliser pour construire le projet.

Je vais demander que ma machine soit réimagée afin que je puisse simplement télécharger et installer Visual Studio à partir de zéro.

(J'espère que Microsoft trouvera bientôt un correctif.)

0
Tahir Hassan