.net core 使用.NET核心SDK而不是Mono构建Mac 2017的VS

.net core 使用.NET核心SDK而不是Mono构建Mac 2017的VS,.net-core,msbuild,visual-studio-mac,.net Core,Msbuild,Visual Studio Mac,我有几种针对.NET标准2.0或.NET核心2.1的组合的解决方案。我安装了最新的.NET Core 2.1 SDK 当我通过Visual Studio for Mac构建它们时,我注意到它使用的是Mono构建工具,而不是dotnet,例如csc.exe: Target CoreCompile: /Library/Frameworks/Mono.framework/Versions/5.16.0/lib/mono/msbuild/15.0/bin/Roslyn/csc.exe 是否有

我有几种针对.NET标准2.0或.NET核心2.1的组合的解决方案。我安装了最新的.NET Core 2.1 SDK

当我通过Visual Studio for 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工具?

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

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

但是,Mono的MSBuild仍然使用.NET核心sdk附带的各种MSBuild sdk目标文件。Mono附带的MSBuild sdk解析器允许找到并使用.NET核心sdk MSBuild目标


还请注意,Mono的MSBuild包含.NET Core SDK的某些部分,因此它可以编译.NET标准项目,而无需.NET Core SDK

单构建工具?你的意思是MSBuild(Mono使用它…
xbuild
已被弃用)。现在,当我们谈论新的核心/dotnet/2.x时,它构建在msbuild之上,也就是说,
dotnet restore
只是调用
msbuild/t:restore…
,所以无论您是通过
dotnet
cmd启动构建,msbuild都在使用mono c编译器进行“工作”。
csc.exe
是Roysln,不推荐使用的Mono编译器是/was
mcs
@sushingover好吧,但是为什么它使用Mono副本,而不是.net core sdk的一部分呢?据我所知,这就是VS4M如何提供给msbuild的默认目录/搜索映射,我从来没有遇到过这个问题,因为同一版本的csc只是csc,现在如果你需要一个不同的版本,那可能是个问题。我有十几个版本的Mono/msbuild/csc/。。。安装在我的Mac上,因此使用MSbuild的属性(如
CscToolPath
)覆盖这些默认路径。