当前位置: 首页 > 编程语言 > C#

可移植C#的最佳实践分享

时间:2023-04-11 02:40:05 C#

可移植C#的最佳实践我期待为linux/windows/mac/任何其他平台编写一些C#代码,并且正在寻找可移植代码的最佳实践。单声道项目有一些很好的移植资源。可移植C#的最佳实践是什么?我其实用的是winforms,还不错。这很糟糕,但它有效。显然,不要使用P/Invoke或任何类似注册表的win32。还要注意任何第三方DLL。例如,我们使用第3方SQLitedll,它实际上包含本机代码,如果我们想在OSX/linux上运行,我们必须替换它。我讨厌“最佳实践”这个词,因为它似乎某些实践在任何环境中都是最好的,而且这样做是有风险的,但我会告诉你我认为多平台代码的“良好实践”(对于大大多数)其他类型的开发):使用持续集成引擎并始终为所有目标平台构建。听起来太复杂了?好吧,如果您真的需要支持多个平台,那就更好了。无论您对代码和库多么小心,如果测试得太晚,您会发现自己要花费大量时间修改应用程序的大部分内容。注意任何与文件名和路径操作有关的事情,并在System.IO.Pathie中使用可移植的.NET方法。而不是:stringmyfile=somepath+"\file.txt";做:stringmyfile=Path.Combine(somepath,"file.txt");如果需要指定路径分隔符,可以使用Path.Separator等。不要将“rn”作为换行符。使用Environment.NewLine记住:LE:似乎一些较新的MacOS不再使用“r”行分隔符。不要在GUI中使用Windows.Forms,但可能已经提到了Mono。对于跨平台的GUI,Gtk#更加一致和可靠。几年前我会建议您自己买一本关于跨平台.NET的书,但由于那本书有点过时,您现在需要坚持使用来自Mono站点的信息。MonoMigrationAnalyzer(MoMA)工具非常适合分析现有的.NET应用程序并提醒您注意可移植性问题,但是对于新代码,最好的选择是使用Mono的最新稳定版本进行开发工作。正如Orion所说,您在使用3rd方DLL时需要小心,尽管如果您想快速检查3rd方软件,我的合著者编写了一个NativeProbe工具来分析DLL的P/Invoke依赖项。如果您决定在MS.NET上进行开发,那么您应该尝试确保在Mono上进行构建和单元测试,并且您还应该了解许多Windows特定的命名空间,例如Microsoft.Win32和System.Management命名空间。如果你希望你的代码是可移植的,你需要仔细查看Mono站点上的已完成函数列表。它们详细说明了框架中的每个类和完整性级别。在设计过程中,您必须考虑这些因素,以免走得太远而发现关键功能尚未实现。以及其他一些简单的事情。就像不假设路径字符一样。或换行符。我是经常在Linux或OSX上的Mono上编译NUnit的人之一。另外,不要假设编译器的工作方式完全相同。我们最近发现了一个问题,即MSC#编译器似乎包含了一些Mono没有的东西,需要在构建脚本中进行额外引用。除此之外,它非常简单。我记得当我们第一次在Mono/Linux上运行GUI时——它非常令人兴奋(即使它非常丑陋)缺少一件事:确保文件名区分大小写。File.Open("MyFile.txt");如果您的文件名为myfile.txt,则无法在Unix上运行。以上就是《C#学习教程:便携C#最佳实践分享》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: