一种在 Mac 上从哪个版本的 .net 框架指定 msbuild 的方法?

A way to specify msbuild from which version of .net framework on Mac?

尝试在 Mac 上的 .Net Core 3 项目上使用 Psake 创建构建脚本。

使用特定框架调用 Psake,

Invoke-psake -buildFile default.ps1 `
             -taskList Test `
             -framework netcoreapp3.0 `
             -properties @{ 
                 "buildConfiguration" = "Release"
                 "buildPlatform" = "Any CPU"} `
             -parameters @{ 
                 "solutionFile" = "PaymentGateway.sln"}

并使用 msbuild 作为解决方案。

Exec {
        msbuild $SolutionFile "/p:Configuration=$buildConfiguration;Platform=$buildPlatform;OutDir=$temporaryOutputDirectory"
    }

它不编译。好像用的是'mono msbuild',看报错信息

"/Users/jakeryu/RiderProjects/PaymentGateway/PaymentGateway.sln" (default target) (1) -> "/Users/jakeryu/RiderProjects/PaymentGateway/Bank/Bank.csproj" (default target) (8) -> /Library/Frameworks/Mono.framework/Versions/5.18.1/lib/mono/msbuild/15.0/bin/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(137,5): error NETSDK1045: The current .NET SDK does not support targeting .NET Core 3.0. Either target .NET Core 2.1 or lower, or use a version of the .NET SDK that supports .NET Core 3.0. [/Users/jakeryu/RiderProjects/PaymentGateway/Bank/Bank.csproj]

我为 dotnetcore3 安装了运行时和 SDK,如下所示,当前版本是 3.0.100。

dotnet --version 3.0.100

我不明白为什么 msbuild 来自 mono 框架而不是 .net 核心。有没有办法指定应该在 Mac 上使用哪个 msbuild?

您可以使用 dotnet msbuild 作为 msbuild 的直接替代品,以确保使用 .NET Core 附带的 MSBuild 版本。