gpt4 book ai didi

c# - MSB4242 : The SDK resolver "Microsoft.DotNet.MSBuildSdkResolver" failed to run. 路径中有非法字符

转载 作者:行者123 更新时间:2023-12-05 09:11:49 33 4
gpt4 key购买 nike

无法从命令提示符构建我的 visual stuidio 项目。 (Visual Studio 2019,.net core)

sourceanalyzer %MEMORY_TRANSLATION% -b %BUILDID% -logfile %LOGFILE_TRANSLATION% msbuild myChatBot.sln /t:Rebuild/p:Configuration=Debug/p:Platform="any cpu"

我们正在尝试使用 HP Fortify 脚本/bat 文件对我的代码运行强化扫描,上面的代码行是从 visual studio 2019 命令提示符构建 sln。获取下面粘贴的错误消息

C:\Users....\myprojVA.csproj : warning MSB4242: The SDK resolver "Microsoft.DotNet.MSBuildSdkResolver" failed to run. Illegal characters in path. Project "C:\Users....\myprojVA.sln" (1) is building "C:\Users....\myprojVA.csproj" (2) on node 1 (Rebuild target(s)). C:\Users....\myprojVA.csproj : error MSB4236: The SDK 'Microsoft.NET.Sdk.Web' specified could not be found. Done Building Project "C:\Users....\myprojVA.csproj" (Rebuild target(s)) -- FAILED. C:\Users....\myprojVA.csproj : warning MSB4242: The SDK resolver "Microsoft.DotNet.MSBuildSdkResolver" failed to run. Illegal characters in path. Project "C:\Users....\myprojVA.sln" (1) is building "C:\Users....\myprojVA.Tests.csproj" (3) on node 1 (Rebuild target(s)). C:\Users....\myprojVA.Tests.csproj : error MSB4236: The SDK 'Microsoft.NET.Sdk' specified could not be found. Done Building Project "C:\Users....\myprojVA.Tests.csproj" (Rebuild target(s)) -- FAILED. Done Building Project "C:\Users....\myprojVA.sln" (Rebuild target(s)) -- FAILED.

Build FAILED.

C:\Users....\myprojVA.csproj : warning MSB4242: The SDK resolver "Microsoft.DotNet.MSBuildSdkResolver" failed to run. Illegal characters in path.

C:\Users....\myprojVA.Tests.csproj : warning MSB4242: The SDK resolver "Microsoft.DotNet.MSBuildSdkResolver" failed to run. Illegal characters in path.

关于 SDK 解析器“Microsoft.DotNet.MSBuildSdkResolver”为何无法运行的任何想法?我该如何解决这个问题?

最佳答案

Microsoft 已将 msbuild 工具的代码开源。看看here在 DefaultSdkResolver 的实现中。

您可以看到消息“路径中的非法字符”所指的路径是通过以下方式创建的:

var sdkPath = Path.Combine(BuildEnvironmentHelper.Instance.MSBuildSDKsPath, sdk.Name, "Sdk");

首先确保您至少安装了一个版本的“.NET Core SDK”。如果你这样做,并且如果你使用默认安装文件夹,你应该在文件夹中有一些东西:C:\Program Files\dotnet\sdk\3.1.101\Sdks(将3.1.101调整为你的版本)

此文件夹将是方法 Path.Combine 的第一个参数。我不明白为什么 msbuild 不在默认安装位置查找它,但似乎您必须设置一个系统变量来告诉 msbuild 您的 SDK 在哪里。

变量名: MSBuildSDKsPath变量值: C:\Program Files\dotnet\sdk\3.1.101\Sdks\

此变量将用于为 BuildEnvironmentHelper.Instance.MSBuildSDKsPath 提供值

非常重要:不要在变量值中使用引号并以“\”结尾,因为正如您在源代码中看到的那样,该值将与剩余路径连接零件。

这应该足以让您编译代码。如果还有更多问题,请尝试将详细级别设置为诊断并检查日志开头的变量值。 (在调用 msbuild 时添加参数 -v diag)

关于c# - MSB4242 : The SDK resolver "Microsoft.DotNet.MSBuildSdkResolver" failed to run. 路径中有非法字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59673525/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com