【问题标题】:Mono porting issue单声道移植问题
【发布时间】:2014-06-30 20:46:51
【问题描述】:

我希望对我将 Winforms C Sharp 项目移植到单声道有所帮助。当我运行迁移助手工具时,没有任何问题。但是,当我在 VS 2013 中编译后尝试使用该程序时,我得到:

未处理的异常:System.InvalidProgramException:System.Windows.Forms.Form:.ctor () 中的 IL 代码无效:方法体为空。

在 TicketDL.Form2..ctor () [0x00000] in :0

at (wrapper remoting-invoke-with-check) TicketDL.Form2:.ctor ()

在 TicketDL.Program.Main () [0x00000] in :0 [错误] 致命的未处理异常:System.InvalidProgramException: System.Windows.Forms.Form:.ctor () 中的 IL 代码无效:方法主体为 空。

在 TicketDL.Form2..ctor () [0x00000] in :0

at (wrapper remoting-invoke-with-check) TicketDL.Form2:.ctor ()

在 TicketDL.Program.Main () [0x00000] in :0

你们中的任何人都知道这意味着什么吗?我尝试删除我能找到的任何空方法!!但是这个错误不断出现!

【问题讨论】:

  • Mono WinForms 不再积极开发/维护。因此,请仔细了解您面临的风险。

标签: c# winforms mono


【解决方案1】:

System.Windows.Forms.Form.ctor 专门指在 System.Windows.Forms.Form 类中定义的构造函数,不一定与从它继承的类(即您的代码)有任何关系。因为这是一个 IL 错误,所以所有东西都有这样明确的命名空间。此外,由于这是 IL,这发生在编译后级别,不一定是您在更高级别 (C#) 代码中做错的事情。

但是,此类只有一个重载,因此您可能需要检查您正在构建的目标运行时 - Xamarin 将 Mono 3.2 列为等效于 .NET 4.5,但您可能正在构建 4.5。 1.还可以考虑使用 Xamarin 下载和构建,因为有时输出可能会略有不同,并且会帮助您确定您的程序所针对的 Mono 平台。

在很大程度上,MOMA 似乎被描述为用于分析您正在调用的方法以及 Mono 尚未实现哪些方法。也不要忘记查看Compatibility Page,以防 MOMA 遗漏了什么

【讨论】:

  • 谢谢!它摆脱了错误......但现在我得到了无用的:此应用程序已请求运行时以不寻常的方式终止它。请联系应用程序的支持团队了解更多信息。
  • 确保您在 x32 或任何 CPU 中运行 - Xamarin 中存在一个错误(错误 11207),阻止它调试 x64。除此之外,断点,并确保在 Project -> Runtime 下切换到 .NET 运行时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多