【问题标题】:Unhandled Exception: System.TypeLoadException when running on mono, compiled on .NET 4未处理的异常:在单声道上运行时的 System.TypeLoadException,在 .NET 4 上编译
【发布时间】:2012-09-28 14:50:29
【问题描述】:

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

当我在 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

现在我是 Mono 的新手,所以首先不知道为什么会发生这个未处理的异常,因为参数化线程的代码来自“http://www.mono-project.com/ThreadsBeginnersGuide”。其次,为什么当我放入时它没有处理 捕获(TypeLoadException tlex)

请帮忙。

谢谢

尼尔

【问题讨论】:

    标签: c#-4.0 mono


    【解决方案1】:

    我在运行 debian 挤压的网络服务器上遇到了类似的问题。 This post给了我一个线索。

    我设置了一个虚拟机并使用 apt-get 安装了整个 monodevelop,它工作正常。 由于我不想在生产机器上安装那么多包和依赖项,所以我花了几个小时来隔离丢失的包。

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

    根据报错信息,想出解决办法并不容易!

    【讨论】:

      【解决方案2】:

      也许这个答案可以帮助你..

      Mono-LibreOffice System.TypeLoadException

      你试过在mono下编译同一个程序并尝试运行它吗??

      另外,您使用的是哪个版本的单声道?可能需要更新到最新版本。

      单--版本

      v 2.10 看起来是最新的稳定版本。
      http://www.go-mono.com/mono-downloads/download.html

      【讨论】:

      • 感谢 Amitd,在 mono 中加载解决方案并构建解决了问题。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多