如何 运行 我的 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。
我已经完成了以下步骤:
- 用 Mono Migration Analyser 在 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 完全兼容。我使用的是强类型数据集、带数据绑定的数据网格和用户特定的应用程序设置。这些组件之一会导致问题吗? 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 版本的单声道并尝试 运行 您的应用。
- 单声道 ODBC / http://www.mono-framework.com/ODBC
顺便说一句:mdb 文件是用于调试版本的 pdb 文件的单声道版本。它们包含额外信息(源文件的完全限定路径、符号等。用于软调试器(即 gdb)
我已经用 Visual Studio 2013 编写了一个 C# .NET 4.5 WinForms 应用程序。现在我想 运行 这个应用程序在我的 Linux 机器(Mint 17.1)上使用 Mono。
我已经完成了以下步骤:
- 用 Mono Migration Analyser 在 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 完全兼容。我使用的是强类型数据集、带数据绑定的数据网格和用户特定的应用程序设置。这些组件之一会导致问题吗? 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 版本的单声道并尝试 运行 您的应用。
- 单声道 ODBC / http://www.mono-framework.com/ODBC
顺便说一句:mdb 文件是用于调试版本的 pdb 文件的单声道版本。它们包含额外信息(源文件的完全限定路径、符号等。用于软调试器(即 gdb)