【问题标题】:VS2019 - MSBuild SdkResolver fails to run when using C#VS2019 - 使用 C# 时 MSBuild SdkResolver 无法运行
【发布时间】:2020-08-29 00:56:03
【问题描述】:

我正在尝试开始使用 c#(我一直在使用 VS for 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 可防止此问题发生并且项目加载正常。但是我找不到问题的根源。

有没有人知道是什么原因造成的?我希望能够处理 C# 项目,而无需每次都通过命令行运行 VS!

【问题讨论】:

  • 请尝试创建一个新项目并测试问题是否仍然存在?
  • 嗨詹姆斯,关于这个问题的任何更新?请检查我的回答是否可以帮助您解决问题。如果有帮助,请不要忘记accept it。如果没有,请随时告诉我们:)
  • 奇怪...我遇到了这个问题。我最近编辑了 PATH,但是当我使用 'dotnet run .从“Windows 终端”应用程序。一切都按预期工作。好像是VS2019的东西

标签: c# visual-studio msbuild visual-studio-2019


【解决方案1】:

有没有人知道是什么原因造成的?我希望能够 无需每次都通过命令行运行 VS 来处理 C# 项目!

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

建议

请尝试以下步骤:

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

2) 检查系统环境变量 PATH 并确保其值为 C:\Program Files\dotnet\ 并且没有其他空格键

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

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

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

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

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

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

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

5) repair VS 或更新到最新版本(如果有任何更新)。

6)删除解决方案文件夹下的.vs隐藏文件夹,binobj文件夹,然后重新测试。

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

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

右键单击 VS2019 快捷方式图标-->属性-->快捷方式

/ResetSkipPkgs 添加到

点击ApplyOk启用它。

注意:使用VS时,请点击该图标打开VS,而不是在不支持该功能的VS Installer下启动)。

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

【讨论】:

  • 这是路径变量!它完全缺少 dotnet 路径,并且有一个空白变量,其中也只有空格,这无济于事。添加到您建议的路径中,现在似乎一切正常,谢谢!
  • 谢谢。对我来说,它也是 Path 变量,我必须将其设置为 C:\Program Files\dotnet\sdk\5.0.404\Sdks - 此外,这发生在 VS 2019 中,在获得 VS 2022 Preview 3 和 VS 的更新后2019 年(我也缺少 .NET Core Cross 平台,但它没有修复它)。
【解决方案2】:

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

Microsoft.DotNet.MSBuildSdkResolver 用于解析“内置”SDK,例如 Microsoft.NET.SdkMicrosoft.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(适用于 Windows 10 和 Windows 8):

  • 在搜索中,搜索并选择:系统(控制面板)
  • 点击高级系统设置链接。
  • 点击环境变量。在 系统变量 部分中找到 PATH 环境变量并选择它。
  • 点击编辑

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    相关资源
    最近更新 更多