NUKE内部版本:找不到合适的MSBuild实例(Visual Studio 2022)



在将Visual Studio 2019升级到2022之后,当我尝试使用NUKE build(调试/发布(构建项目时,我遇到了以下错误:

╬════════════
║ Compile
╬═══
Assertion failed: Could not find a suitable MSBuild instance.
at Nuke.Common.Tools.MSBuild.MSBuildToolPathResolver.Resolve(Nullable`1 msBuildVersion, Nullable`1 msBuildPlatform)
at Nuke.Common.Tools.MSBuild.MSBuildSettings.GetProcessToolPath()
at Nuke.Common.Tools.MSBuild.MSBuildSettings.get_ProcessToolPath()
at Nuke.Common.Tooling.ProcessTasks.StartProcess(ToolSettings toolSettings)
at Nuke.Common.Tools.MSBuild.MSBuildTasks.MSBuild(MSBuildSettings toolSettings)
at Nuke.Common.Tools.MSBuild.MSBuildTasks.MSBuild(Configure`1 configurator)
at AREGIS.Build.DeagBuild.<get_Compile>b__21_1() in C:Work.VertexVertex40 BuildDeagBuild.cs:line 98
at Nuke.Common.Execution.BuildExecutor.<>c.<Execute>b__4_2(Action x)
at Nuke.Common.Utilities.Collections.EnumerableExtensions.ForEach[T](IEnumerable`1 enumerable, Action`1 action)
at Nuke.Common.Execution.BuildExecutor.Execute(NukeBuild build, ExecutableTarget target, IReadOnlyCollection`1 previouslyExecutedTargets, Boolean failureMode)

Repeating warnings and errors:
Assertion failed: Could not find a suitable MSBuild instance.

编译方法:

Target Compile => _ => _
.DependsOn(this.RestoreFramework)
.Executes(() =>
{
var compileOutput = MSBuild(x => x
.SetTargetPath(this.MySolution)
.Set...
.Set...
);
});

目标框架:.NET Framework 4.8

有什么办法解决它吗?

我必须设置流程工具路径。我通过添加MSBuild.exe 的路径修复了它

.SetProcessToolPath(@"C:Program FilesMicrosoft Visual Studio2022EnterpriseMSBuildCurrentBinMSBuild.exe")

编译方法应为:

Target Compile => _ => _
.DependsOn(this.RestoreFramework)
.Executes(() =>
{
var compileOutput = MSBuild(x => x
.SetProcessToolPath(@"C:Program FilesMicrosoft Visual Studio2022EnterpriseMSBuildCurrentBinMSBuild.exe")
.SetTargetPath(this.MySolution)
.Set...
.Set...
);
});

解决此问题的更好方法是使用环境变量MSBUILD_EXE,该变量应指向MSBuild.exe。然后使用属性MSBuildTasks.MSBuildPath:而不是对源中的路径进行硬编码

MSBuildTasks.MSBuild(settings => settings
.SetProcessToolPath(MSBuildTasks.MSBuildPath)
.EnableRestore()
.SetSolutionFile(solution)
.SetConfiguration(Configuration));

要添加到此答案:https://stackoverflow.com/a/70097525/569302

我现在正在使用Visual Studio社区2022:

对我来说,路径是:C:Program FilesMicrosoft Visual Studio2022CommunityMSBuildCurrentBinMSBuild.exe

最新更新