我是 Mono 的新手,我正在尝试做一些非常基本的概念验证测试,以使用 Mono 运行 winforms 应用程序。我在 VS2012 中构建了一个非常简单的应用程序(基本上只有一个按钮和一些数据访问代码),然后通过 MoMA 运行它,一切都检查出来了。但是,当我尝试使用 Mono(使用 Mono-2.10.9 命令提示符)运行我的 .exe 时,我在错误日志中收到以下错误:
Unhandled Exception: System.NullReferenceException: Object reference not set to an
instance of an object
at Mono.Data.Tds.Protocol.TdsConnectionPool.GetConnection () [0x00000] in <filename
unknown>:0
at System.Data.SqlClient.SqlConnection.Open () [0x00000] in <filename unknown>:0
at MonoWinForm1.DataAccess.ExecuteSQLSelect (ConnectionStrings connectionString,
System.String sql) [0x00000] in <filename unknown>:0
at MonoWinForm1.Form1..ctor () [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) MonoWinForm1.Form1:.ctor ()
at MonoWinForm1.Program.Main () [0x00000] in <filename unknown>:0
我使用这篇文章作为模型:http ://www.mono-project.com/Guide:_Porting_Winforms_Applications 。这似乎表明您可以使用 C# 在 VS2012 中编写和构建,并且只需使用 Mono 运行,但显然数据代码并非如此。这是导致异常的方法:
DataSet results = new DataSet();
using (SqlConnection connection = new SqlConnection(GetConnectionString(connectionString)))
{
using (SqlCommand command = new SqlCommand(sql, connection))
{
connection.Open();
command.CommandType = CommandType.Text;
command.CommandTimeout = Int32.Parse(ConfigurationManager.AppSettings["SQLCommandTimeout"]);
SqlDataAdapter adapter = new SqlDataAdapter(command);
adapter.Fill(results);
}
}
我确信它比仅仅构建你的应用程序并在 Mono 中运行它更复杂,所以如果有人能引导我朝着正确的方向前进,我将非常感激。谢谢。