C# 来自Mono的TypeLoadException

C# 来自Mono的TypeLoadException,c#,mono,katana,C#,Mono,Katana,我正在尝试让Mono 3.4.0与一些Microsoft OWIN组件一起工作。我已经开始在Windows上进行测试,但当我的应用程序处理HTTP请求时,会出现以下异常: System.TypeLoadException:无法从程序集“Microsoft.Owin,版本=2.1.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35”加载类型“Microsoft.Owin.Security.AuthenticateResult” 该应用程序正在使用Visual St

我正在尝试让Mono 3.4.0与一些Microsoft OWIN组件一起工作。我已经开始在Windows上进行测试,但当我的应用程序处理HTTP请求时,会出现以下异常:

System.TypeLoadException:无法从程序集“Microsoft.Owin,版本=2.1.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35”加载类型“Microsoft.Owin.Security.AuthenticateResult”

该应用程序正在使用Visual Studio作为标准的.NET程序集进行编译,预期它应该在Mono运行时上运行

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

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:

class Program
{
    static void Main(string[] args)
    {
        var type = typeof(AuthenticateResult);
        Console.WriteLine(type.AssemblyQualifiedName);
    }
}
我已经使用Microsoft.Owin程序集中的许多类型进行了测试,得到了类似的结果。如果我在需要之前使用
typeof
操作符加载类型,Mono不会引发异常,而是在尝试加载其他类型时抛出异常(可能只是代码需要的下一个类型)


为什么我在单声道跑步时会有这种奇怪的行为?我是否必须在命令行上指定一些东西,才能像从.NET CLR中所期望的那样加载程序集?我可以做些什么来获取有关类型未能加载的原因的进一步信息吗?

类型加载错误似乎是由代码中引用的类型所使用的类型之一引起的,而不是您实际使用的类型

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

Mono:类System.Security.Claims.ClaimSideEntity无法创建 已加载,在mscorlib中使用,版本=4.0.0.0,区域性=中性, PublicKeyToken=b77a5c561934e089


对照这一点,我们可以看到尚未在Mono中实现System.Security.Claims命名空间。

相关:。问题中还有一个关于Mono实现的问题。您在哪里设置Mono_LOG_LEVEL变量?在XCODE中?在终点站?