2016-09-25 8 views
2

CodenameOne의 IKVM 버전을 통해 타사 Android 라이브러리를 실행하고 Visual Studio에서 내 UWP 응용 프로그램에 대한 참조로 .dll 출력을 성공적으로 가져 왔습니다. 나는 하나의 빌드 오류가 프로젝트를 컴파일하려고하면 :모듈 CommonLanguageRuntimeLibrary에서 System.ApplicationException을 찾을 수 없습니다.

내가 읽은 바로는

Cannot find type System.ApplicationException in module CommonLanguageRuntimeLibrary

(출력 창에서) (오류 목록에서 창)

Program Files (x86)\MSBuild\Microsoft\WindowsXaml\v14.0\8.2\Microsoft.Windows.UI.Xaml.Common.targets(352,5): Xaml Internal Error error WMC9999: Cannot find type System.ApplicationException in module CommonLanguageRuntimeLibrary.

System.ApplicationException은 .Net for UWP에서 가치가 떨어지고 그 대신에 당신은 그냥 사용해야 만합니다. System.Exception

나는이 문제를 해결하거나 해결하는 방법을 모른다. 그것은 도서관에서 왔고 내 코드는 아닙니다.

미리 감사드립니다.

+0

@stackoverflow.com/questions/24217509/cannot-find-type-system-applicationexception-in-module-mscorlib-dll-error-in-win – GANI

+0

@GANI 작동/허용 대답이 아닙니다. – JM8s

+0

나는 Steve에게 여기 당신을 도우려고 요청했다. 나는 우리가 UWP와 관련된 끔찍한 사건과 끔찍한 오류 메시지/실패로 많은 어려움을 겪었다는 것을 알고 있습니다. –

답변

0

IKVM의 포트는 아직 턴키가 아닙니다. IKVM은 .Net 2.0을 사용하여 컴파일되며 사용하는 UWP 프로젝트에 포함될 필요가있는 인터페이스를 사용하여 일부 항목 (예 : 반향 항목, 날짜 항목, 스레드 등)이 추출됩니다.

이러한 인터페이스를 구현하지 않았거나 CN1에 대해 필요하지 않은 코드 경로를 사용하는 경우 .Net 2.0 클래스를 사용하는 JDK 또는 IKVM 런타임의 일부를 시작할 수 있습니다 (예 : this 예외).

  1. RuntimeReflectionHelper :

    는 현재 귀하의 UWP 프로젝트에서 구현해야 할 두 인터페이스가 있습니다.

  2. 당신이 볼 수

, 그들이 초기화 방법 CN1 포트에 여기

here 사실 주위에 얻는 UWP 프로젝트 내에서 이들을 구현하는 RuntimeReflectionHelperNativeThreadHelper

의 구현입니다 NativeThreadHelper 그 IKVM은 .Net 2.0 용으로 컴파일되므로 이러한 구현은 UWP API를 직접 사용할 수 있습니다.

이 경우에도 문제가 발생할 수 있습니다. 이 IKVM 포트는 CN1 포트 측면에서 진화하고 있으며 실제로는 유스 케이스에 대해서만 테스트되었습니다. 우리가 CN1을 필요로하지 않는다면 몇몇 일반적인 방법은 구현되지 않을 수 있습니다.

일부 다른 제한 당신은 알고 있어야합니다

  1. 프로젝트에 iKVM을 컴파일 된 코드는 당신이 서로 참조 할 경우 단일 .DLL 파일의 일부가 될 필요가있다. 예 : 두 라이브러리 lib1.jar 및 lib2.jar을 lib1.dll 및 lib2.dll로 컴파일하면 lib1의 코드는 lib2의 클래스를 참조 할 수 없으며 그 반대의 경우도 마찬가지입니다. CN1에서는 모든 .class 파일을 IKVM을 통해 실행하기 전에 하나의 .jar 파일로 묶어 놓았습니다. 그래서 우리에게는 문제가되지 않습니다. (그래서 나는 그것을 고치려고 많은 시간을 소비하지 않았습니다.)

  2. Windows 스토어에 게시하는 것이 목표 인 경우 현재 DotNetNative 툴체인에 try/catch 블록이 포함 된 동기화 된 메소드가 중단되는 버그가 있습니다.이것은 향후 릴리스에서 Microsoft에 의해 수정 될 가능성이 있지만, 모든 클래스에서 사전 변환을 실행하여 이러한 모든 메서드를 원시 도구 체인에서 사용할 수있는 형식으로 변환함으로써이 문제를 해결할 수 있습니다. Here이 전처리를 적용하는 ANT 태스크 부분. Here은 실제 전처리 작업을 수행 할 때 사용하는 ANT 태스크의 클래스 전 처리기 프로젝트입니다. 내가 전에 말했듯이

, 이미 뭐래 된 산책로 외부 탐색하는 경우 어려움으로 실행 것으로 기대합니다.