1

Windows Phone 7.1 라이브러리를 참조하는 Windows Phone 7.1 응용 프로그램이 있습니다. 이 라이브러리는 Windows Phone 7 이상을 대상으로하는 PCL을 참조합니다.형식을 지정하지 않은 TypeLoadException 문제를 해결하는 방법?

한순간에 응용 프로그램은 PCL에서 클래스를 확장하는 라이브러리에서 클래스의 새 인스턴스를 만들려고합니다. PCL 클래스에는 보호 된 생성자가 있으므로 라이브러리 클래스에서이를 재정의하여 public으로 만듭니다. 생성자는 1 개의 매개 변수를 사용합니다. 응용 프로그램에서이 매개 변수의 인스턴스를 만들고 다른 생성자에 대해 : base()이라는 자체 코드가없는 라이브러리의 생성자에 전달합니다.

Windows Phone 에뮬레이터에서 앱을 실행하면 문제가 없습니다. 앱이로드되고 몇 개의 화면을 탐색합니다.

나는 중단 점을 명중하고 단계를 밟는다. 나는 도서관의 생성자에서 착륙하지만 PCL의 생성자가 될 한 걸음 더 나아가려고하면 "유형을로드하는 중에 오류가 발생했습니다"라는 TypeLoadException이 생깁니다. 스택 추적은 라이브러리 생성자에서 중지되며 내부 예외는 없습니다.

나는 또한 Windows Phone 7.8 에뮬레이터를 사용해 보았습니다. 그리고 매개 변수없는 생성자를 사용하여 라이브러리 클래스의 생성자에서 직접 새 인스턴스를 만들려고했지만 그냥 : base(new ...)이라고 말하면서 모두 동일한 방식으로 실패합니다.

내가 사용할 수없는 것을 찾으려는 시도가 무엇인지 모르기 때문에 문제의 원인을 파악하는 방법을 모릅니다. 라이브러리 및 PCL 어셈블리가 프로젝트의 빌드 디렉토리에있는 매니페스트에 나열된 것을 봅니다.

google fu가 건조하고 있습니다. 누구든지 내가 계속 볼 수있는 아이디어가 있습니까?

감사합니다.

답변

0

나는 피 묻은 바보예요.

그렇게 표시된 것처럼 PCL에서 무언가를로드하는 데 문제가있었습니다. 그러나 .NET이 준비가되지 않았으며 나에게 아무 말도하지 않고 바 코딩되었습니다.

문제를 해결하기 위해 PCL에서 다른 여러 클래스의 인스턴스를 작성하여 멤버 변수로 설정하는 전체 생성자 본문을 주석 처리했습니다. 이것은 효과가 있었다.

그런 다음 다시 실패 할 때까지 생성자 비트의 주석 처리를 시작했습니다. 나를 실패한 한 계급으로 이끌었다. 생성자가 취한 모든 객체에 대해 null을 전달하면 여전히 TypeLoadException이 발생하므로 매개 변수 중 하나 여야합니다. 모든 매개 변수를 제거하고 작동합니다. 그래서 나는 그것이 내 얼굴에 날 때까지 한 번에 하나씩 매개 변수를 추가했습니다.

내 문제의 근본 원인은 Windows 7과 Silverlight 4에서 제대로 컴파일 되긴하지만 PCL은 실제로 Windows Phone 7이 지원하지 않는 기능 창을 사용하고 있다는 것입니다. 즉, 공동 및 대조 변형 제네릭 인터페이스. 난 invariant 제네릭 형식을 처리 할 수 ​​있도록 모든 PCL을 리팩토링해야했고 모든 것이 정상적으로 진행됩니다.