일부 Microsoft OWIN 구성 요소에서 Mono 3.4.0을 사용하려고합니다. 나는 Windows에서 테스트를 시작했습니다,하지만 내 응용 프로그램이 HTTP 요청을 처리 할 때, 나는 다음과 같은 예외 얻을 :TypeLoadException from Mono
System.TypeLoadException : 어셈블리에서 유형 'Microsoft.Owin.Security.AuthenticateResult'를로드 할 수 없습니다 '마이크로 소프트 .Owin, 버전 = 2.1.0.0, 문화 = 중립, PublicKeyToken = 31bf3856ad364e35 '.
응용 프로그램이 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 및 모노 모두에서 작동 : 나는 비슷한 결과로 Microsoft.Owin 어셈블리에서 유형의 숫자, 테스트 한
class Program
{
static void Main(string[] args)
{
var type = typeof(AuthenticateResult);
Console.WriteLine(type.AssemblyQualifiedName);
}
}
. 필요하기 전에 typeof
연산자를 사용하여 유형을로드하면 Mono는 예외를 발생시키지 않고 대신 다른 유형 (아마도 다음 코드 만 필요함)을로드하려고 시도하는 예외를 던집니다.
왜 모노에서 실행할 때이 이상한 동작이 발생합니까? .NET CLR에서 기대하는대로 어셈블리를로드하기 위해 명령 줄에 지정해야하는 것이 있습니까? 왜 유형을로드하지 못한 이유에 대한 추가 정보를 얻기 위해 할 수있는 일이 있습니까?
관련 항목 : [ClaimsIdentity System.Security.Claims in Mono] (http://stackoverflow.com/questions/21101170/claimsidentity-system-security-claims-in-mono). [이 GitHub 스레드] (https : //)를 가리키는 질문에 [주석] (http://stackoverflow.com/questions/21101170/claimsidentity-system-security-claims-in-mono#comment33473563_21101170)이 있습니다. github.com/NancyFx/Nancy/issues/1190)에서 Mono 구현에 대해 알아보십시오. –
어디에서 MONO_LOG_LEVEL 변수를 설정합니까? XCODE에? 터미널에? – CthulhuJon