MSBuildWorkspace。工具版本“当前”无法识别

MSBuildWorkspace. The tools version "Current" is unrecognized

提问人:Eugene Shelukhin 提问时间:10/24/2023 最后编辑:Eugene Shelukhin 更新时间:10/25/2023 访问量:53

问:

当我将某些旧项目加载到 MSBuildWorkspace 中时,出现诊断错误:

msbuild 在处理文件“...SomeProj.csproj“替换为 消息:无法识别工具版本“当前”。可用工具 版本为“2.0”、“3.5”、“4.0”。

MetadataReferences 的空列表。
(项目在同一台 PC 上的 VS 2022 中正确打开。

但是,如果我编辑...SomeProj.csproj 文件并删除“ToolsVersion”属性,然后具有 MetadataReferences 的项目将正确加载到 MSBuildWorkspace 中。 如何在不修改csproj文件本身的情况下以编程方式忽略ToolsVersion属性?

我有安装了 VS 2022 的干净窗户。如果我另外安装了构建工具 2019,问题就会停止重现,但必须有一种方法可以避免额外的安装,因为项目在 VS 2022 中正确打开。

MSBuild Roslyn

评论

0赞 Jason Malinowski 10/24/2023
在调用 MSBuildWorkspace 之前,如何使用 MSBuildLocator?
0赞 Eugene Shelukhin 10/24/2023
@JasonMalinowski,MSBuildLocator.QueryVisualStudioInstances() 返回唯一的实例 (MSBuildPath: “C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin”)。因此,我注册了此实例(MSBuildLocator.RegisterInstance(_instance);)

答:

0赞 Eugene Shelukhin 10/25/2023 #1

安装 nuget 解决了该问题Microsoft.Build

评论

1赞 Jason Malinowski 11/4/2023
就目前而言,这是一个非常好的答案,但是一旦我合并了 github.com/dotnet/roslyn/pull/70469,就不再需要了。因此,一旦 4.9 NuGet 包发布,你也许可以简化此操作。