使用 MonoDevelop 或 Cake/XBuild 编译解决方案给出不同的结果

Compiling a solution with MonoDevelop or Cake/XBuild giving different results

在使用 MonoDevelop 5.1.0 编译解决方案和通过 Cake script invoking XBuild.

编译相同的解决方案时,我遇到了不同的行为

使用 MonoDevelop 编译解决方案时,一切正常。 通过我的蛋糕脚本编译时,出现以下错误:

The type System.IDisposable' is defined in an assembly that is not referenced. Consider adding a reference to assembly System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

造成这种不同行为的原因是什么?

蛋糕脚本没有做任何花哨的事情。它只是使用完全相同的解决方案调用 XBuild。

我的环境(在 Fedora 23 上):

mono --version
Mono JIT compiler version 4.4.0 (Stable 4.4.0.142/81f38a9 Thu Apr 28 09:14:25 EDT 2016)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
    TLS:           __thread
    SIGSEGV:       altstack
    Notifications: epoll
    Architecture:  amd64
    Disabled:      none
    Misc:          softdebug 
    LLVM:          supported, not enabled.
    GC:            sgen

XBuild Version:
XBuild Engine Version 14.0
Mono, Version 4.4.0.0
Copyright (C) 2005-2013 Various Mono authors

您可以尝试使用 Cake.Xamarin addin which provides the MDToolBuild alias for the mdtool 而不是使用 XBuild 别名,它使用不带 GUI 的 Monodevelop 来编译您的解决方案。

public static void MDToolBuild(
       FilePath projectOrSolutionFile,
       Action<MDToolSettings> settings
)

Cake 脚本中的示例用法:

#addin "Cake.Xamarin"

MDToolBuild(
   "./mySolution.sln",
   settings=> { settings.Configuration = "Debug"; },
);