首页 > 解决方案 > 为什么我们在使用 Microsoft.Build 库时会收到这个 InvalidProjectFileException 异常?

问题描述

我被要求调查为什么我们的构建过程在安装了 Visual Studio 2022(版本 17.0.0 预览版 3.1)的机器上运行时失败。我对 C#、MSBuild 或 NuGet 包不是很熟悉,所以我可能会问一个无意义的问题!请耐心等待。

我们的 C# 构建应用程序尝试创建 的实例Microsoft.Build.Execution.ProjectInstance,如下所示:

var pi = new ProjectInstance(projectFile, BuildProperties, null);

其中“projectFile”是 MSBuild 的 XML 脚本的位置。但是这个调用会导致以下异常:

Microsoft.Build.Exceptions.InvalidProjectFileException: 'The tools version "Current" is unrecognized. Available tools versions are "2.0", "3.5", "4.0".

如果我尝试将 null 参数更改为“16.0”、“17.0”或“Current”,我会得到相同异常的变化。

如果我尝试直接使用 msbuild.exe,它会说它是“Microsoft (R) Build Engine version 17.0.0-preview-21380-01+b6e7d6051 for .NET Framework”,尽管我接受这可能是一个红鲱鱼因为我们正在自动化 MSBuild,而不是直接运行 msbuild.exe,所以如果这无关紧要,我们深表歉意。

我有从构建应用程序项目引用的最新 NuGet Microsoft.Build 包 (v16.11.0)。我注意到没有 v17 包(还)。

我们在这里做一些根本错误的事情吗?为什么我们会得到这个异常?异常消息说唯一的工具是非常低的版本号似乎不寻常。我原以为它会说工具版本更像 16、17 等,但不是“2.0”!构造函数中的 ToolsVersion 参数是ProjectInstance与 NuGet 包的版本(16.11)相关,还是与随 VS2022(17.0 预览版)一起安装的 MSBuild 版本相关,还是完全与其他相关!?

非常感谢所有帮助。如果我的问题措辞不好,或者您需要更多信息来提供帮助,请询问。

标签: c#automationmsbuildnuget

解决方案


推荐阅读