如何 运行 我的 C# Visual Studio 应用程序在 Linux 下使用 Mono?

How to run my C# Visual Studio Application with Mono under Linux?

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

我已经完成了以下步骤:

应用程序没有启动,但我看到一个异常,它没有给我任何可能出错的提示。这是例外情况:

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 完全兼容。我使用的是强类型数据集、带数据绑定的数据网格和用户特定的应用程序设置。这些组件之一会导致问题吗? app.config 由 xbuild 进程创建,它包含预期的内容(具有默认值的应用程序设置)。

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

您知道应用程序无法启动的原因吗?

谢谢,

此致,

迈克尔

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 框中似乎没有定义 database/datasource,因此文件名例外。开箱即用,Mono 提供 SQLite 安装,仅此而已。有(曾经)有许多 ODBC 提供程序可用于 Linux 的各种风格(请咨询您的数据库提供程序)。

这个当然不会查这个妈了

此外,我建议 运行 它位于 Windows 框的 Mono 下。安装 Windows 版本的单声道并尝试 运行 您的应用。

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