0

我用 Visual Studio 2013 编写了一个 C# .NET 4.5 WinForms 应用程序。现在我想在我的 Linux 机器(Mint 17.1)上用 Mono 运行这个应用程序。

我已经完成了以下步骤:

  • 使用Mono Migration Analyzer在 Windows 下分析我的 .exe
    • Moma 的所有测试均通过(我必须调整 RTL 属性)
  • 已安装 mono-complete (apt-get install mono-complete, 当前版本为 3.2.8)
  • 使用 xbuild 编译(无选项)我的 csproj 文件(0 个错误 1 ​​个警告:/usr/lib/mono/4.5/Microsoft.Common.targets:警告:参考 'System.Deployment' 未解决)
  • 尝试从我的控制台使用 ./app.exe 启动应用程序

应用程序没有启动,但我看到了一个异常,它没有给我任何关于可能出现问题的提示。这是例外:

Unhandled Exception:
System.ArgumentException: dataMember
  at System.Windows.Forms.ListBindingHelper.GetList (System.Object dataSource, System.String dataMember) [0x00000] in <filename unknown>:0 
  at System.Windows.Forms.BindingSource.ResetList () [0x00000] in <filename unknown>:0 
  at System.Windows.Forms.BindingSource.set_DataMember (System.String value) [0x00000] in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.BindingSource:set_DataMember (string)
  at mda.vaulty.main.Database.VaultManagment.InitializeBindingSources () [0x00000] in <filename unknown>:0 
  at mda.vaulty.main.Database.VaultManagment..ctor () [0x00000] in <filename unknown>:0 
  at mda.vaulty.main.MainForm..ctor () [0x00000] in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) mda.vaulty.main.MainForm:.ctor ()
  at mda.vaulty.main.Program.Main () [0x00000] in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentException: dataMember
  at System.Windows.Forms.ListBindingHelper.GetList (System.Object dataSource, System.String dataMember) [0x00000] in <filename unknown>:0 
  at System.Windows.Forms.BindingSource.ResetList () [0x00000] in <filename unknown>:0 
  at System.Windows.Forms.BindingSource.set_DataMember (System.String value) [0x00000] in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.BindingSource:set_DataMember (string)
  at mda.vaulty.main.Database.VaultManagment.InitializeBindingSources () [0x00000] in <filename unknown>:0 
  at mda.vaulty.main.Database.VaultManagment..ctor () [0x00000] in <filename unknown>:0 
  at mda.vaulty.main.MainForm..ctor () [0x00000] in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) mda.vaulty.main.MainForm:.ctor ()
  at mda.vaulty.main.Program.Main () [0x00000] in <filename unknown>:0 

该项目是一个 .NET 4.5 项目,据我所知,它与 Mono 完全兼容。我正在使用强类型数据集、带有 DataBindings 的 DataGrids 和用户特定的应用程序设置。这些组件之一会导致问题吗?app.config 由 xbuild 进程创建,它包含预期的内容(具有默认值的应用程序设置)。

xbuild 编译器也创建了一个 mdb 文件。但是我不知道这个文件,因为 VS2013 没有创建这样的文件。

你知道为什么应用程序没有启动吗?

谢谢,

问候,

迈克尔

4

1 回答 1

0

at (wrapper remoting-invoke-with-check) System.Windows.Forms.BindingSource:set_DataMember (string) at mda.vaulty.main.Database.VaultManagment.InitializeBindingSources () [0x00000] in <filename unknown>:0 at mda.vaulty.main.Database.VaultManagment..ctor () [0x00000] in <filename unknown>:0 at mda.vaulty.main.MainForm..ctor () [0x00000] in <filename unknown>:0

您的 Linux/Mint 机器上似乎没有定义数据库/数据源,因此文件名异常。开箱即用,Mono 提供了 SQLite 安装,仅此而已。(曾经)有许多 ODBC 提供程序可同时用于各种 Linux 风格(请咨询您的 DB 提供程序)。

这当然不会被本妈查。

另外,我建议您在 Windows 机器上的 Mono 下运行它。安装 Windows 版本的 mono 并尝试运行您的应用程序。

顺便说一句:mdb 文件是用于调试构建的单声道版本的 pdb 文件。它们包含额外信息(用于软调试器(即 gdb)的源文件、符号等的完全限定路径

于 2015-06-21T16:35:57.570 回答