C# 来自Mono的TypeLoadException
我正在尝试让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程序包添加到控制台应用程序中,并设法将问题复制到以下代码中: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
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中?在终点站?