4

首先,我在 answers.unity.com 上发布了一个类似的问题,在意识到它会影响更广泛的社区之后......所以请不要把它当作交叉发布。

最近将 C# 代码部署到 IOS 对我来说是一场噩梦。当我尝试将我的游戏部署到 IPAD 时,一切都以 ExecutionEngineException 开始,并且我使用了我的成熟且经过单元测试的程序集。

这几天我做了功课,发现了几十个与ExecutionEngineException相关的问题。据我所知,这里没有神奇的解决方案,只能解决特定代码。

现在问题来了:假设您有一个经过良好单元测试的代码。(例如游戏 AI 或任何与 IOS 平台不直接相关的东西)这在 IOS 上运行时会变成雷区。您无法知道,也无法对代码的哪一部分进行单元测试。

这破坏了我(我们的?)关于软件质量和测试的所有想法......

我们必须在这里找到解决方案。理想情况下,我们应该在桌面上针对其单元测试运行 AOT ed 代码。我认为目前不可能,如果我错了,请纠正我并分享一步一步的说明如何做到这一点(最好在 Windows 中?)

作为备用计划,我们必须创建一个详细列表,如果针对 AOT-ed 平台,如 IOS,则不使用哪种代码构造

到目前为止我的经验:

1) 将 FirstOrDefault 与值类型一起使用 2) 使用 Sum(customType =(gt) customType.Property)

有人知道如何处理这个问题吗?

问候

4

1 回答 1

4

假设您有一个经过良好单元测试的代码。

如果您已经进行了单元测试,那么您很幸运。您只需使用Touch.Unit在 iOS 设备上调整这些单元测试。

作为备用计划,我们必须创建一个详细列表,如果针对 AOT-ed 平台,如 IOS,则不使用哪种代码构造

你会得到最接近的是 MonoTouch 的限制页面。上下文,而不是 API,通常是最重要的细节。

例如,使用值类型的泛型会产生问题(因为很难检测到需要生成什么)。人们在使用 LINQ 时经常会遇到这个问题,但这不是 LINQ 问题——而是 LINQ 查询中使用的类型。

1) 将 FirstOrDefault 与值类型一起使用

已在 MonoTouch 中修复了相当长一段时间的 AFAIK(至少有几种变体)。OTOH Unity 引擎可能还没有这些修复。

2) 使用 Sum(customType =(gt) customType.Property)

在这种情况下,不知道类型就不可能说它是否有效。如果/当您遇到此类情况时,请将它们报告给bugzilla,因为我们将能够将它们包含在我们的测试套件中(用于未来的版本),并且通常能够为大多数情况提供快速的解决方案。

于 2012-10-01T12:54:57.400 回答