首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自Mono的TypeLoadException

来自Mono的TypeLoadException
EN

Stack Overflow用户
提问于 2014-06-23 22:21:45
回答 1查看 1K关注 0票数 3

我试图让Mono3.4.0使用一些Microsoft组件。我已经开始在Windows上进行测试,但是当我的应用程序处理HTTP请求时,我会得到以下异常:

System.TypeLoadException:无法从程序集'Microsoft.Owin、Version=2.1.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35‘加载'Microsoft.Owin.Security.AuthenticateResult’类型。

正在使用Visual作为标准.NET程序集编译应用程序,并期望它在Mono运行时上运行。

我将Microsoft.Owin NuGet包添加到控制台应用程序中,并设法将问题再现到以下代码中:

代码语言:javascript
复制
class Program
{
    static void Main(string[] args)
    {
        var instance = new AuthenticateResult(
            null,
            new AuthenticationProperties(),
            new AuthenticationDescription());

        Console.WriteLine(instance.GetType().AssemblyQualifiedName);
    }
}

在.NET中运行此操作,应用程序将正常启动并输出类型信息。如果通过Mono运行,应用程序将输出异常并失败。

此外,这段代码在.NET和Mono中都可以工作:

代码语言:javascript
复制
class Program
{
    static void Main(string[] args)
    {
        var type = typeof(AuthenticateResult);
        Console.WriteLine(type.AssemblyQualifiedName);
    }
}

我用Microsoft.Owin程序集中的许多类型进行了测试,得到了类似的结果。如果我在需要之前使用typeof操作符加载类型,Mono不会引发异常,而是抛出一个异常试图加载另一个类型(可能只是下一个代码所需的类型)。

为什么我在Mono跑步时会有这种奇怪的行为?我是否必须在命令行中指定一些东西来加载程序集,就像我从.NET CLR中期望的那样?有什么我可以做的,以获得更多的信息,为什么类型未能加载?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-24 21:14:12

看起来,类型加载错误是由代码中引用的类型使用的类型之一引起的,而不是实际使用的类型。

如果在运行程序之前运行set MONO_LOG_LEVEL=debug,您将在输出中看到以下内容:

Mono:无法加载类System.Security.Claims.ClaimsIdentity,在mscorlib、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089中使用

通过对单一状态页进行检查,我们可以看到还没有在Mono中实现任何System.Security.Claims命名空间。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24375532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档