无法使用 xbuild 构建解决方案(单声道)

Unable to use xbuild to build solution (Mono)

当尝试使用 xbuild 通过 Mono 在 Mac 和 Linux 上构建我的解决方案时(尚未在 Windows 下测试),我觉得很奇怪我在其他地方找不到的错误。

Errors:

/Users/macbook/git/DiscordSharp/DiscordSharp.sln (default targets) ->
(Build target) ->
/Users/macbook/git/DiscordSharp/DiscordSharp/DiscordSharp.csproj (default targets) ->
/Library/Frameworks/Mono.framework/Versions/4.2.2/lib/mono/4.5/Microsoft.CSharp.targets (CoreCompile target) ->

    /Library/Frameworks/Mono.framework/Versions/4.2.2/lib/mono/4.5/Microsoft.CSharp.targets: error : Tool executable '/MSBuild/14.0/Bin/mcs.exe' could not be found

     1 Warning(s)
     1 Error(s)

Time Elapsed 00:00:02.0472770
MacBooks-MacBook:DiscordSharp macbook$ 

有趣的是,我能够在 MonoDevelop 中打开解决方案并以此方式构建它。解决方案目标中的项目 Mono / .NET Framework 4.5。我是 运行 单声道 4.2 SR1 (4.2.2.30)

是什么原因导致了这个问题,我可以用什么方法解决它?这个问题使我无法在这个项目中使用 TravisCI,而且我还没有找到解决办法。

.csproj 文件只为 Platform 条件定义了一个非 Unix CscToolPath(应该使用 OS...),不确定是什么Windows(?) 的要求是 v14,所以作为测试:

vi DiscordSharp/DiscordSharp.csproj

删除:

<PropertyGroup Condition="'$(Platform)' != 'Unix'">
    <CscToolPath>$(MSBuildProgramFiles32)\MSBuild.0\Bin</CscToolPath>
</PropertyGroup>

重建项目,它应该可以正常工作:

nuget restore
xbuild DiscordSharp.sln

如果 Windows 需要 v14 MSbuild,您可以使用以下内容:

<PropertyGroup Condition="'$(OS)' != 'Unix'">
    <CscToolPath>$(MSBuildProgramFiles32)\MSBuild.0\Bin</CscToolPath>
</PropertyGroup>

http://www.mono-project.com/archived/porting_msbuild_projects_to_xbuild/

那么下面应该 运行 没有错误:

xbuild /target:clean
xbuild /target:build