VS for Mac 2017 使用 .NET Core SDK 而不是 Mono 构建

VS for Mac 2017 building with .NET Core SDK instead of Mono

我有几个针对 .NET Standard 2.0 或 .NET Core 2.1 的某种组合的解决方案。我安装了最新的 .NET Core 2.1 SDK。

当我通过 Visual Studio 为 Mac 构建它们时,我注意到它使用的是 Mono 构建工具而不是 dotnet,例如 csc.exe:

Target CoreCompile:
    /Library/Frameworks/Mono.framework/Versions/5.16.0/lib/mono/msbuild/15.0/bin/Roslyn/csc.exe 

是否有选项或其他一些 属性 需要更改以便它可以使用 SDK 而不是 Mono 工具?

对于 Mac,Visual Studio 中没有使用 dotnet 进行构建的选项。它使用 msbuild。如果你真的想这样做,你需要绕过 VS Mac 提供的内置支持和 msbuild 的使用。

VS Mac 使用 Mono 附带的 msbuild,因为它比 .NET Core SDK 的 MSBuild 支持更多的目标框架(例如 Xamarin.iOS、Xamarin.Android)。请注意,Windows 上的 VS 采用类似的方法,它使用桌面 MSBuild 来 运行 构建而不使用 dotnet 构建。

然而,Mono 的 MSBuild 仍然使用 .NET Core SDK 附带的各种 MSBuild sdk 目标文件。 Mono 附带一个 MSBuild sdk 解析器,允许找到和使用 .NET Core SDK msbuild 目标。

另请注意,Mono 的 MSBuild 包含 .NET Core SDK 的某些部分,因此它可以在不需要 .NET Core SDK 的情况下编译 .NET Standard 项目。