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
隐藏文件夹,bin
和obj
文件夹再测试
============================================= ===
除外,还可以直接在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.MSBuildSdkResolver 和 Microsoft.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.
我正在尝试开始使用 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
隐藏文件夹,bin
和obj
文件夹再测试
============================================= ===
除外,还可以直接在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.MSBuildSdkResolver 和 Microsoft.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.