采用单声道跨平台开发的措施是什么?我如何编译Windows(在Linux中),如何在Linux中运行(因为没有.NET JIT编译器)?
那么使用Mono开发的特点是什么?使用Visual Studio开发有什么优势(除了跨平台的东西)?
答案 0 :(得分:28)
在Mono中开发绝对是一个与警告的经纪人的跨平台:
#ifdef
出Windows API并提供您自己的Mono包装器以最小化代码更改,例如,有一个使用的DLL包装器Interop调用Win32方法,如'GetFont',这是一个假设的例子,GetFont将在Mono下返回不存在的Font信息,但是你可以创建一个不返回任何内容并包含{{1}的假包装器。在Mono下编译时使用包装器,在Windows下编译时关闭宏,如何实现包装器取决于你。#ifdef
)使其独立于Unix的CR和Win32的CRLF,同样适用于路径分隔符,适用于Unix'/'和Win32'\'。最后但并非最不重要的是,继续检查从Mono到Win32再返回,继续测试和测试。
答案 1 :(得分:3)
大多数单声道运行时与CLR兼容,因为它们遵循相同的标准。
这意味着一旦你编译你的代码(在Mono 或 visual studio中),只要你确保只使用两者支持的功能(例如单声道中没有WMI东西)和写您的应用程序具有平台感知能力,使用最佳实践(示例使用Path.Combine
构建文件和目录路径,使用Environment.NewLine
输出新行等),您的应用程序可以在任何平台上运行Mono或CLR(包括Windows,Linux和Mac)。
你可以在视觉工作室中使用mono进行开发,因此关于这一点的部分问题没有实际意义。
答案 2 :(得分:2)
Mono本身就是跨平台。
通过使用mono进行专门开发,您将能够在任何具有单声道可用功能的平台上运行您的可执行文件。与在MSFT的.Net平台上开发相比,这本身就是单声道的最大优势。换句话说:如果你用单声道构建你的程序集,你就可以保证跨平台的支持,因为.Net的构建可能不会给你。
Mono已经对.Net中的缺陷进行了一些升级(例如,Mono.security提供了.Net 2.0中没有的功能,但我相信MSFT会在以后的版本中选择它们)。
可以使用Visual Studio构建.Net程序集,并让Mono运行它,但是程序集必须注意只使用Mono supports的框架/库,以及由...引用的任何非托管程序集。您的程序集可用于您选择的操作系统。换句话说:如果你的程序集在windows上使用了C ++ dll,你必须确保你拥有正确的.a / .so文件。
要在Linux中运行.net程序集(假设已正确安装mono),请键入:mono myprogram.exe
答案 3 :(得分:1)
在Mono上开发的唯一优势是您可以使用Mac OS X或Linux环境。但是,如果您有选择,请永远不要离开Visual Studio。 据我所知, Visual Studio是可用于C#和VB开发的最佳IDE。