.NET / Mono框架目标

假设我有两台机器,一台带有.NET 4.0的MS Windows,另一台带有Mono 2.10.1的Linux机器
现在我在各自的机器上创build一个命令行应用程序,它将使用以下命令输出安装的框架版本:

Console.WriteLine(Environment.Version); 

问题1

我的假设是正确的,应显示以下内容:
Windows:4.0.30319.1
Linux:2.10.1(或类似的东西??)

问题2
假设我们在Windows机器上安装了mono和ms.net,有没有办法指定一个exe文件必须在windows的mono框架上运行? (也许是一个configuration文件?)

问题3
如果我在Linux机器上编译(简单)单声道应用程序,将编译的exe工作在仅安装有ms.net的Windows机器上?

更新

  • 问题1(test.cs如下[1]),在linux上测试:

 mono.2.6.7 $ ./test.exe 2.0.50727.1433 $ source custom/MONO/devenv.sh mono.2.11 $ dmcs test.cs mono.2.11 $ ./test.exe WARNING: The runtime version supported by this application is unavailable. Using default runtime: v1.1.4322 1.1.4322.2032 mono.2.11 $ mono ./test.exe 4.0.30319.1 mono.2.11 $ 
  • 问题2

    你可以创建一个批处理文件来调用mono.exe myapplication 。 查看%PROGRAMFILES%\ Mono 2.10 \ bin以获取大量示例

  • 问题3是

为了兼容性检查其他方式(检查实现存根,缺少P / Invoke功能等),有MoMa工具


test.cs中

 using System; namespace X { class Y { public static int Main(string[] args) { Console.WriteLine(Environment.Version); return 0; } } } 

广告问题1:您应该期望运行时版本,而不是单声道版本

对于问题2:您可以在Xamarin studio的windows环境中将运行时默认为单声道。

你可以从这里单声道运行时间:

Xamarin Studio => Tools => Options => Projects => .NET Runtimes => Add(在这里添加mono)

并将mono标记为默认运行时。