关于mono和coreclr(OS X)的困惑

时间:2015-08-26 13:28:17

标签: .net macos mono dnx

我正在尝试使用OSX上的coreCLR运行一个应用程序(使用xbuild构建)并面临一些问题。

之前我在OSX上安装了“mono-complete”。我使用“xbuild”构建我的应用程序,然后使用“mono my.exe”运行它。这一切都很好。

我想看看我的应用程序“my.exe”是否与coreCLR兼容,是否可以运行它。

所以我为OS X安装了dnx sdk。

$ dnvm list

Active Version              Runtime Arch OperatingSystem Alias
------ -------              ------- ---- --------------- -----
       1.0.0-beta8-15120    coreclr x64  darwin          
  *    1.0.0-beta6          mono         linux/darwin    default

此时如果我运行“dnx my.exe”,它运行正常。 (我假设我在这里使用单声道运行时?)

但是如果我切换到coreCLR,“dnx my.exe”不起作用。见下文:

$ dnvm use 1.0.0-beta8-15120 -r coreclr
Adding /Users/test_user/.dnx/runtimes/dnx-coreclr-darwin-x64.1.0.0-beta8-15120/bin to process PATH

$ dnx my.exe
'my.exe' does not contain a static 'Main' method suitable for an entry point
Trace/BPT trap: 5

我做错了吗?

我是否必须使用coreCLR sdk显式编译我的应用程序?

我还注意到人们正在使用一种叫做“corerun”的东西。我假设它类似于“mono”命令,它只使用coreCLR执行应用程序。

那么“dnx”在这种情况下是做什么的?

我在我的系统上找不到“corerun”命令。 DNX SDK不提供corerun吗?

1 个答案:

答案 0 :(得分:3)

Mono相当于.NET Framework。 .NET Core完全不同,

http://blogs.msdn.com/b/dotnet/archive/2014/12/04/introducing-net-core.aspx

您的应用程序必须针对.NET Core 5配置文件进行编译和设计,以便能够在.NET Core 5上运行。这不是一个自动的事情。目前,您只能使用Visual Studio 2015进行此类开发(或使用命令行工具在代码编辑器中)。

corerun在此示例中略有描述,

https://github.com/dotnet/coreclr/blob/master/Documentation/building/osx-instructions.md