VS2019 - 使用 C# 时,MSBuild SdkResolver 无法 运行

VS2019 - MSBuild SdkResolver fails to run when using C#

我正在尝试开始使用 C#(我一直在毫无问题地使用 VS 进行 C++),但每当我尝试打开 C# 项目时,我都会收到此错误:

The project file cannot be opened. The SDK resolver "Microsoft.DotNet.MSBuildSdkResolver" failed to run. Illegal characters in path.

.csprj只有7行!

    <Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

</Project>

我尝试将 " 换成 ',但出现了同样的错误。

运行 带有 /ResetSkipPkgs 的 VS2019 可防止此问题发生并且项目加载正常。但是我找不到问题的根源。

还有其他人知道是什么原因造成的吗?我希望每次都能够通过命令行在没有 运行 VS 的情况下处理 C# 项目!

Does anyone else know what could be causing this? I'd like to be able to work on C# projects without running VS via commandline every time!

不确定您之前对 VS 做了什么。可能这个问题是由某些第三方集成工具、VS 扩展或某些 VS 设置引起的。

建议

请尝试以下步骤:

1)确保你的VS2019已经安装了这两个工作负载

2) 检查系统环境变量 PATH 并确保它具有值 C:\Program Files\dotnet\没有其他 space 个键.

,检查你是否有环境变量MSBuildSDKsPath,如果有,你应该检查它的值是否存在,并输入路径核实。如果没有,您应该修改为使用已经存在的地址。

如果MSBuildSDKsPath不存在,您应该添加它并将其值设置为

C:\Program Files\dotnet\sdk.1.xxx\Sdks

确保路径存在于您的 PC 下。

非常重要:不要在变量值中使用引号并以 \ 结尾。所以请检查每个环境,确保没有乱码。

3)打开VSIDE,点击菜单Extensions-->Manage Extensions 并进入已安装的扩展,然后禁用任何第三方扩展以检查问题是否由它们引起。

4)通过工具重置所有VS设置-->导入和导出设置 -->重置所有设置 或只是 运行 devenv /Resetsettings.

5) repair VS或者有更新就更新到最新版本

6)删除解决方案文件夹下的.vs隐藏文件夹,binobj文件夹再测试

============================================= ===

外,还可以直接在VS图标中加入/ResetSkipPkgs的开关,这样每次打开VS时都会运行/ResetSkipPkgs 同时.

Right-click on the VS2019 Shortcut icon-->Properties-->Shortcut

/ResetSkipPkgs添加到

单击应用确定启​​用它。

注意:使用时,应该通过点击该图标打开VS,而不是在VS Installer下启动,后者不会支持该功能)。

如果你在开始菜单启动VS2019,你应该通过我在C:\ProgramData\Microsoft\Windows\Start Menu\Programs中的功能修改快捷方式。

Visual Studio 和 dotnet CLI 附带的两个 SDK 解析器是:Microsoft.DotNet.MSBuildSdkResolverMicrosoft.Build.NuGetSdkResolver.

Microsoft.DotNet.MSBuildSdkResolver 是解决“内置”SDK 的原因,例如 Microsoft.NET.Sdk Microsoft.NET.Sdk.Web.它首先查找您的 dotnet CLI(例如 C:\Program Files\dotnet\dotnet.exe

这是我的错误消息:

System.ArgumentException
  HResult=0x80070057
  Message=Illegal characters in path.
  Source=mscorlib
  StackTrace:
   at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)
   at System.IO.Path.Combine(String path1, String path2)
   at Microsoft.DotNet.DotNetSdkResolver.EnvironmentProvider.<>c__DisplayClass7_0.<GetCommandPath>b__0(String p)
   at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at Microsoft.DotNet.DotNetSdkResolver.EnvironmentProvider.GetCommandPath(String commandName)
   at Microsoft.DotNet.DotNetSdkResolver.NETCoreSdkResolver.GetDotnetExeDirectory()

您必须检查系统变量 PATH。打开命令提示符CMD)并输入:echo %PATH% 并检查是否有路径中的非法字符 (") C:\Program Files\Java\jdk1.8.0_291"\bin;

打开系统变量PATH(对于Windows10和Windows8):

  • 在搜索中,搜索然后 select:系统(控制面板)
  • 单击高级系统设置 link。
  • 单击环境变量。在 System Variables 部分找到 PATH 环境变量并 select 它。
  • 单击编辑

The system variables

在我的例子中,java_home 路径中有引号:

JAVA_HOME: "C:\Program Files\Java\jdk1.8.0_291"

路径: %JAVA_HOME%\bin;

1) 您可以使用不带引号的短路径更正路径 C:\PROGRA~1\Java\jdk1.8.0_291

Edit environment variable

2)将以下路径C:\Program Files\dotnet\C:\Program Files (x86)\dotnet\向上移动,保存并重启Visual Studio.