web-dev-qa-db-ja.com

無効な静的メソッド呼び出し構文:「[MSBuild] :: IsRunningFromVisualStudio()」

Visual Studio 2017 15.5にアップグレードした後、プロジェクトが正しくロードされません。すべてが利用不可とマークされています。

すべてのプロジェクトで次のエラーが表示されます。

エラー:無効な静的メソッド呼び出し構文:「[MSBuild] :: IsRunningFromVisualStudio()」。メソッド '[MSBuild] :: IsRunningFromVisualStudio'が見つかりません。静的メソッドの呼び出しは、$([FullTypeName] :: Method())の形式である必要があります。 $([System.IO.Path] :: Combine(ab))。 C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets

プロジェクトをリロードすると、次のエラーが表示されますプロンプト: enter image description here

新しいプロジェクトを追加すると、次のエラープロンプトが表示されます。

enter image description here

22
mortenma71

1。 Visual Studio 2017の実行中のすべてのインスタンスを閉じます

2。 Launch(管理者として) "VS 2017の開発者コマンドプロンプト"

次のコマンドを入力します(Professionalをお使いのエディションのEnterpriseまたはCommunityに置き換えるか、それに応じてパスを調整します)。

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。 Visual Studio 2017を再起動します

25
Yuriy Oleynik

githubのこの問題 への応答から、GACに古いバージョンのMSBuildがあることが原因であることが多いようです。これは、VSの更新バージョンに同梱されているバンドルバージョンよりも優先して使用されます。

解決策は、Microsoft.Buildの古いバージョンをgacから削除することです。

  1. Gac'dバージョンを見つけます:

    gacutil /l | findstr Microsoft.Build

  2. バージョン15.x.x.xのいずれかを探し、それらを削除します。

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

  3. Visual Studioを再起動します

関連するアセンブリを削除する必要がある場合もありますMicrosoft.Build.Utilities.CoreMicrosoft.Build.FrameworkおよびMicrosoft.Build.Tasks.Coreそのバージョンの。

0
nik

アップデータ経由で最新のVisual Studioバージョンをインストールした後、同じエラーメッセージが表示されました。

この問題は、少なくとも私の場合、Visual Studio更新プログラムのインストール後に再起動することで解決しました。

0
Marcus Krahl

企業ネットワーク上のWindows 7 PC上のVisual Studio 2017でこの問題が発生しました。次の方法で問題を解決しようとしました。

  • コンピューター/ Visual Studioを数回再起動します(こちらの回答に記載されています)。
  • 「拡張機能と更新プログラム」にあるVisual Studioの最新バージョンへのアップグレード
  • インストーラーで「修復」オプションを使用します。
  • 「Visual Studio Installer」をアンインストールして完全にアンインストールし([コントロールパネル]→[プログラムの削除]を追加)、再インストールします。

VS2017 Community Editionバージョン15.5をインストールしたときに、VS2017がインストールされていない同僚のコンピューターに問題がないことに気付きました。

この時点で、私は敗北を認めなければなりません。唯一の簡単な解決策は、ファイル内の行を置き換えることです。

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

ファイルの終わり近くに行があります:

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

$([MSBuild]::IsRunningFromVisualStudio())trueに置き換えるだけです:

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

ただし、これはプロジェクトのロードのみを許可します-これを使用してプロジェクトをビルドすることはできません。

Visual Studioを最初からダウンロードしてインストールできるように、マシンのイメージを再作成するように依頼します。

(Microsoftがすぐに修正を提供することを望みます。)

0
Tahir Hassan