C# 4.0 未处理的异常:System.TypeLoadException在mono上运行时,在.NET 4上编译

C# 4.0 未处理的异常:System.TypeLoadException在mono上运行时,在.NET 4上编译,c#-4.0,mono,C# 4.0,Mono,我用C#编写了一个小应用程序,它可以正常工作。目标框架是.NET4 当我在linux-mono下运行应用程序时,应用程序启动没有问题 然而,我似乎有一个单线程下的问题 代码如下: try { Thread oThread = new Thread(new ParameterizedThreadStart(this.SendSms)); oThread.IsBackground = t

我用C#编写了一个小应用程序,它可以正常工作。目标框架是.NET4

当我在linux-mono下运行应用程序时,应用程序启动没有问题

然而,我似乎有一个单线程下的问题

代码如下:

 try
                {
                    Thread oThread = new Thread(new ParameterizedThreadStart(this.SendSms));
                    oThread.IsBackground = true;
                    oThread.Start(_data);

                    while (!oThread.IsAlive)
                    {
                        Console.WriteLine("Sleeping...");
                        Thread.Sleep(1);
                    }

                }
                catch (TypeLoadException tlex)
                {
                    Console.WriteLine("TypeLoadException: " + tlex.Message);

                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
它似乎无法访问SendSms方法,而是抛出以下错误:

Unhandled Exception: system.TypeLoadException: A type load exception has occurred. at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: A type load exception has occurred. at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0
未处理的异常:system.TypeLoadException:发生类型加载异常。在0中的System.Threading.Thread.StartUnsafe()[0x00000]处
[错误]严重的未处理异常:System.TypeLoadException:发生类型加载异常。在0中的System.Threading.Thread.StartUnsafe()[0x00000]处
现在我是Mono新手,所以首先不知道为什么参数化线程的代码来自'http://www.mono-project.com/ThreadsBeginnersGuide'. 第二,为什么我把它放在 catch(TypeLoadException)

请帮忙

谢谢


尼尔也许这个答案对你有帮助

您是否尝试过在mono下编译相同的程序并尝试过运行它

另外,您使用的是哪个版本的mono??可能需要将其更新为最新版本

单声道版本

V2.10看起来是最新的稳定版本。

也许这个答案对你有帮助

您是否尝试过在mono下编译相同的程序并尝试过运行它

另外,您使用的是哪个版本的mono??可能需要将其更新为最新版本

单声道版本

V2.10看起来是最新的稳定版本。

我在运行debian Squence的web服务器上遇到了类似的问题。给了我一个线索

我建立了一个虚拟机,并使用apt get安装了整个monodevelop,它运行正常。 因为我不想在生产机器上安装那么多的包和依赖项,所以我花了几个小时隔离丢失的包

在我的例子中,它们只缺少3个包(libmono-system-xml-linq4.0-cil、libmono-system-componentmodel-dataannotations4.0-cil和libmono-system-componentmodel-composition4.0-cil),但这当然取决于您的应用程序


根据错误消息,很难找到解决方案

我在运行debian Squence的web服务器上遇到了类似的问题。给了我一个线索

我建立了一个虚拟机,并使用apt get安装了整个monodevelop,它运行正常。 因为我不想在生产机器上安装那么多的包和依赖项,所以我花了几个小时隔离丢失的包

在我的例子中,它们只缺少3个包(libmono-system-xml-linq4.0-cil、libmono-system-componentmodel-dataannotations4.0-cil和libmono-system-componentmodel-composition4.0-cil),但这当然取决于您的应用程序


根据错误消息,很难找到解决方案

虽然通过安装丢失的软件包解决了问题,但我注意到在通过Nuget引用DLL时也可能出现此错误:Monodevelop没有将这些DLL复制到输出文件夹(即/bin/Debug),这使我的程序无法运行。调试器甚至无法进入第一行代码!这是我在Ubuntu 16.04上想到的。检查您的输出文件夹,如果您注意到某些DLL丢失,您应该尝试手动复制它们,看看您的应用程序现在是否运行。

虽然问题是通过安装丢失的软件包解决的,但我注意到您在通过Nuget引用DLL时也可能出现此错误:Monodevelop没有将这些DLL复制到输出文件夹(即/bin/Debug)这使我的程序无法运行。调试器甚至无法进入第一行代码!我在Ubuntu 16.04上遇到了这种情况。请检查您的输出文件夹,如果您发现缺少一些DLL,您应该尝试手动复制它们,看看您的应用程序现在是否运行。

谢谢Amitd,用mono加载解决方案并构建排序的pr解决问题。感谢Amitd,在mono和building中加载解决方案解决了问题。