Mono 运行时的限制

问题描述 投票:0回答:3

我的问题与这个这个类似,但有一点区别。所以这就是我在这里问的原因。

我有一个闪亮的 .Net 3.5 Windows 服务(带有 NHibernate、LINQ、lambda 表达式)等,在 Windows 上运行。现在我计划将我的应用程序移植到Linux,所以我正在考虑Mono。

我可以在 Windows 中编译我的 .net 应用程序,然后将其复制到安装了 .Net(单声道版本)的 Linux 计算机上,并期望它顺利运行吗?如果没有,我应该做什么?

欢迎任何答案或指点。

.net mono
3个回答
8
投票

它会起作用吗?您确实必须来测试它。我最近刚刚努力让 Protocol Buffers 在 Mono 上工作。到目前为止,我在执行时遇到的麻烦很少;编译器对我来说更是一个问题。然而,我不得不暂时禁用其中一个单元测试(使用模拟),因为它会使 Mono 2.4 VM 本身崩溃。我还没调查过为什么,但这种事情基本上是无法预测的。

在我看来,任何使用 CLR“深层”方面的东西(例如表达式树和动态方法)都可能比简单的库存在更多问题。

现在,你说它是一个 Windows 服务 - 显然 Linux 没有与 Windows 完全相同的服务,因此你需要弄清楚你希望它如何运行。如果我是你,我会首先将它作为一个简单的控制台应用程序运行......一旦一切正常,你可以考虑将其与其他“服务”控制器等集成 - 如果你发现需要的话。

确实曾经的情况是

xbuild
没有提供从在Windows上构建到在Linux上构建的无缝迁移路径...但是,它最近引起了很多关注,因此值得再次尝试.. .


7
投票

首先使用 MoMA 工具

Mono 迁移分析仪 (MoMA) 工具可以帮助您识别可能存在的问题 移植你的.Net时有 应用于 Mono。它有助于查明 平台特定调用 (P/Invoke) 和 尚不支持的领域 单声道项目。虽然 MoMA 可以提供帮助 显示潜在的问题,有很多 无法涵盖的复杂因素 通过一个简单的工具。 MoMA 可能会失败 指出会导致的区域 问题,并可能指出领域 这实际上不会成为问题

从个人角度来看:所有 C# 3.0 功能都得到了很好的支持,我对 LINQ 没有任何问题(对于对象,不知道 LINQ to SQL 或 to XML),NHiberinate 也工作得很好(尽管我最终没有在)


2
投票

运行时应该没问题,但您可以运行Mono Migration Analyzer

© www.soinside.com 2019 - 2024. All rights reserved.