无效的静态方法调用语法:“[MSBuild] :: IsRunningFromVisualStudio()”

时间:2017-12-06 09:13:34

标签: msbuild visual-studio-2017

升级到Visual Studio 2017 15.5后,我的项目都不会正确加载。所有都标记为不可用。

我为每个项目收到以下错误:

  

错误:无效的静态方法调用语法:“[MSBuild] :: IsRunningFromVisualStudio()”。找不到方法'[MSBuild] :: IsRunningFromVisualStudio'。静态方法调用的格式应为:$([FullTypeName] :: Method()),例如: $([System.IO.Path] ::组合(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

6 个答案:

答案 0 :(得分:26)

1。关闭所有正在运行的Visual Studio 2017实例

2. 启动(以管理员身份)“VS 2017开发人员命令提示”

3. 键入以下命令(将Professional替换为您的版本,企业版或社区版,或相应地调整路径):

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

答案 1 :(得分:0)

通过更新程序安装最新的Visual Studio版本后,我收到了相同的错误消息。

至少在我的情况下,通过在安装Visual Studio更新后重新启动,问题得到了解决。

答案 2 :(得分:0)

我在公司网络上的Windows 7 PC上遇到Visual Studio 2017的这个问题。我尝试通过以下方式解决问题:

  • 多次重启计算机/ Visual Studio(如答案中所述)。
  • 升级到“扩展和更新”中的最新版Visual Studio
  • 使用安装程序中的“修复”选项。
  • 卸载“Visual Studio Installer”(控制面板→添加删除程序),然后重新安装,完全卸载它。

我注意到在安装了VS2017的同事的计算机上,当我安装VS2017 Community Edition 15.5版时,没有问题。

此时,我不得不承认失败。唯一简单的解决方案是替换文件中的行:

  • 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。

(我希望微软能尽快提出解决方案。)

答案 3 :(得分:0)

从对this issue on github的回复来看,它通常是由GAC中的旧版MSBuild引起的。然后将优先使用随VS的更新版本一起提供的捆绑版本。

解决方案是从gac中删除旧版本的Microsoft.Build。

  1. 找到gac的版本:

    gacutil /l | findstr Microsoft.Build

  2. 查找版本15.x.x.x中的任何版本,然后将其删除:

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

  3. 重新启动Visual Studio

  4. 可能还需要删除该版本的相关程序集Microsoft.Build.Utilities.CoreMicrosoft.Build.FrameworkMicrosoft.Build.Tasks.Core

答案 4 :(得分:0)

除了 Yuriy Oleynik's answer 中提到的程序集之外,我发现我需要在 gac(我使用的是 VS 2019)中添加一个额外的程序集(请参阅下面的最后一个命令):

gacutil.exe -i "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\amd64\Microsoft.Build.dll"
gacutil.exe -i "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\amd64\Microsoft.Build.Conversion.Core.dll"
gacutil.exe -i "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\amd64\Microsoft.Build.Engine.dll"
gacutil.exe -i "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\amd64\Microsoft.Build.Framework.dll"
gacutil.exe -i "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\amd64\Microsoft.Build.Tasks.Core.dll"
gacutil.exe -i "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\amd64\Microsoft.Build.Utilities.Core.dll"
gacutil.exe -i "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\amd64\System.Collections.Immutable.dll"

答案 5 :(得分:-2)

henkmollema在这个帖子中提供的解决方案:https://github.com/Microsoft/msbuild/issues/2775是从开始菜单启动visual studio安装程序并运行修复。

enter image description here