【问题标题】:NUKE Build: Could not find a suitable MSBuild instance (Visual Studio 2022)NUKE Build:找不到合适的 MSBuild 实例 (Visual Studio 2022)
【发布时间】:2022-01-02 21:22:52
【问题描述】:

将 Visual Studio 2019 升级到 2022 后,尝试使用 NUKE Build (Debug/Release) 构建项目时出现以下错误:

╬════════════
║ 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.Vertex\Vertex\40 Build\DeagBuild.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

有什么办法可以解决吗?

【问题讨论】:

    标签: c# msbuild dotnetnuke visual-studio-2022


    【解决方案1】:

    我必须set process tool path。我通过添加 MSBuild.exe 的路径来修复它

    .SetProcessToolPath(@"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe")
    

    编译方法应该是:

     Target Compile => _ => _
        .DependsOn(this.RestoreFramework)
        .Executes(() =>
        {
            var compileOutput = MSBuild(x => x
                .SetProcessToolPath(@"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe")
                .SetTargetPath(this.MySolution)
                .Set...
                .Set...
                );
        });
    

    【讨论】:

    • 为我节省了很多时间。
    猜你喜欢
    • 2022-12-19
    • 1970-01-01
    • 2022-01-16
    • 2021-12-23
    • 2021-12-30
    • 2022-10-07
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    相关资源
    最近更新 更多