0

我是 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 中运行它更复杂,所以如果有人能引导我朝着正确的方向前进,我将非常感激。谢谢。

4

1 回答 1

0

我现在开始工作了,对列出的代码没有任何更改!我在一个类中定义了其他几个 SQL 访问方法,它一定是其中之一导致了错误。不知道为什么我没有调用的方法会导致异常,但这就是正在发生的事情,并且异常只是没有提供任何指导。无论如何,感谢您提供帮助。对不起,莫诺不公正地指责你。

于 2013-02-15T16:37:03.713 回答