2016-09-25 37 views
2

CodenameOneのIKVMのバージョンでサードパーティ製のAndroidライブラリを実行し、出力.dllをVisual StudioのUWPアプリケーションへの参照として正常にインポートしました。私が読んだから(出力ウィンドウから)モジュール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

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

+0

@GANIは動作していない/受け入れられている回答です。 – JM8s

+0

私はスティーブにお手伝いを依頼しました。私は、UWPに関連した悲惨なケースや恐ろしいエラーメッセージ/失敗で多くの苦労をしたことを知っています。 –

答えて

0

IKVMのポートは、ターンキーではありません。 IKVMは.Net 2.0を使用してコンパイルされ、それを使用するUWPプロジェクトに含める必要があるインターフェースを使用して、いくつかのもの(例えば、リフレクション用のもの、日付用のもの、スレッドなど)が取り出されます。

これらのインターフェイスを実装していない場合、またはCN1に必要のないコードパスを使用している場合は、.NET 2.0クラスを使用するJDKまたはIKVMランタイムの一部を使用している可能性があります例外)。

  1. RuntimeReflectionHelper:

    は、現在お使いのUWPプロジェクトで実装する必要がある唯一の2つのインタフェースがあります。

  2. NativeThreadHelper

あなたは彼らがここでhere

がUWPプロジェクトがあるという事実を回避して内部でこれらを実装するRuntimeReflectionHelperNativeThreadHelper

の実装されている初期化されているかCN1ポートで、見ることができますIKVMは.Net 2.0用にコンパイルされているため、これらの実装ではUWP APIを直接使用できます。

これでも、おそらく問題が発生します。 IKVMのこのポートはCN1ポート側に進化しており、実際には使用例についてのみテストされています。いくつかの一般的なメソッドは、CN1に対してそれらを必要としない場合、実装されていない可能性があります。あなたが知っておく必要があり

いくつかの他の制限:

  1. プロジェクトでIKVMコンパイルされたコードは、あなたがそれを相互に参照したい場合は、単一の.dllファイルの一部である必要があります。例えば。 2つのライブラリlib1.jarとlib2.jarをlib1.dllとlib2.dllにコンパイルすると、lib1のコードはlib2のクラスを参照できず、その逆もありません。 CN1では、すべての.classファイルをIKVMを介して実行する前に単一の.jarにバンドルしていますので、私たちにとって問題ではありません(なぜそれを修正しようと多くの時間を費やさなかったのですか)。

  2. Windowsストアに公開することを目標にしている場合は、現在DotNetNativeツールチェーンにバグがあり、try/catchブロックを含む同期されたメソッドを枯渇させます。これは将来のリリースではMicrosoftによって修正される可能性がありますが、すべてのクラスで事前変換を実行して、そのようなすべてのメソッドをネイティブツールチェーンで受け入れ可能な形式に変換することで回避します。 Hereこの前処理を適用するANTタスクの部分。 Hereは、これが実際の前処理を行うために使用するANTタスク用のクラスプリプロセッサプロジェクトです。

私が前に言ったように、すでに燃えている道の外を探索しているなら、難しいと思う。

関連する問題