c# - 我应该使用单声道来开发 linux 应用程序吗

标签 c# visual-studio-2012 mono

我有多年的微软开发堆栈开发经验,主要是 visual studio 2012/c#。但是现在,我需要在 Linux 上开发应用程序。虽然我知道 C++,但我已经有好几年没有真正接触它了。我有几个问题。

  1. 我可以使用 mono 进行开发并为 linux 和 windows 编译二进制文件而无需更改(或最少的)代码更改吗?
  2. 我可以使用 visual studio 2012 在 windows 平台上开发,在 windows 平台上为 linux 编译吗? windows平台的linux编译需要用虚拟机吗?
  3. 如果你想在windows平台上开发linux应用程序,你如何设置你的开发环境(在windows上开发,为linux和windows编译。我用于测试的linux box是一台单独的机器。)

关于我在做什么的一些信息。 我的项目是关于网络 channel 分析的。客户端很可能是没有 ui 的廉价工业 linux 机器。我正在使用 mono/c# 开发客户端。服务器将是使用 vs2012 c# 开发的 Windows。最有可能使用 wpf 作为 ui。我计划在 linux(客户端)和 windows(服务器)之间共享网络/通信库。我使用 linux 的主要考虑是节省成本,因为客户端几乎是千台。

谢谢。

最佳答案

Mono 以 PE(可移植可执行文件)格式运行可执行文件,这是 Windows 的 native 文件格式。只要您的应用程序是纯 MSIL,就无需“为 Linux 编译”。即使您通过 p/invoke 使用 native DLL,Mono 和 Wine 也会协同工作以在 Linux 上运行 Windows 文件。

(原生 Linux 应用程序使用的 a.out 和 ELF 可执行文件格式没有存储 .NET 元数据的机制,PE 格式被修改为支持 .NET,所以这就是 .NET Framework(不是 Micro Framework)实现无论平台如何使用)

关于c# - 我应该使用单声道来开发 linux 应用程序吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18479483/

相关文章:

Visual Studio 2012 中的 c++ std::thread 问题

c# - mono.unix.native 在哪里

c# - 单声道 Linux Shell 命令

c# - 将枚举作为字符串存储在数据库中

c# - 如何将字符串转换为颜色?

c# - 使用VSTO读取Excel中的ActiveCell内容

c# - 表单是否像指针一样工作?

c++ - 使用 Visual Studio 2012 时 OpenGL 的调试问题

c# - 尝试建立与 SQL Server Express 的连接时出错

c# - 将 MS.NET C# 嵌入到 c/c++(如单声道)