我期待为linux/windows/mac /任何其他平台编写一些C#代码,并且正在寻找可移植代码的最佳实践.
Project mono有一些很棒的移植资源.
便携式C#的最佳实践是什么?
我讨厌术语"最佳实践",因为似乎某些实践在任何环境中都是最好的,这是一个冒险的事情,但我会告诉我我认为多平台代码的"好习惯"(对于大多数人来说)其他类型的发展):
使用持续集成引擎并始终为所有目标平台构建.
听起来太复杂了?好吧,如果你真的需要支持多个平台,那就更好了.无论你对代码和库的使用有多么小心,如果你测试得太晚,你会发现自己花了很多时间来重新处理应用程序的大部分内容.
我实际上使用了winforms,它很好.这很糟糕,但它奏效了.
显然,不要使用P/Invoke或任何win32之类的东西,比如注册表.还要注意任何第三方DLL.例如,我们使用第三方SQLite DLL实际上包含本机代码,如果我们想在OSX/linux上运行,我们必须将其替换掉.
注意与文件名和路径操作有关的任何事情,并使用System.IO.Path中的可移植.NET方法即.
代替:
string myfile = somepath + "\\file.txt";
做:
string myfile = Path.Combine(somepath, "file.txt");
如果需要指定路径分隔符,则可以使用Path.Separator等
不要将"\ r \n"用于新行.使用Environment.NewLine
记住:
*NIX仅使用换行符("\n")
Windows使用"\ r \n"
MacIntosh使用"\ r"(我对此并不十分肯定 - 随意纠正我).
LE:似乎一些较新的MacOS不再使用"\ r"行分隔符了.
不要在GUI中使用Windows.Forms,但是Mono可能已经提到过了.对于跨平台GUI,Gtk#更加一致和可靠.