リリースモードで起動しようとすると、アプリケーションが失敗する。デバッグモードは正常に動作します。呼び出しのターゲットが例外をスローされました:私はオブジェクトをリフレクティブに作成している間だけ、リリースモードで例外が発生する
型「System.Reflection.TargetInvocationException」の未処理の例外がPresentationFramework.dll
に追加情報を発生した読み込みエラーを取得しています。
これはリリースでのみ発生するため、デバッグするのが少し難しかったです。私はプロジェクトのプロパティで「コードの最適化」のチェックボックスのチェックを外す場合は、私はこの方法でスローされた例外を見ることができる午前:
この行のprivate static T MakeObject<T>(Type type) where T :class
{
//Default reflective behavior to create an instance with an empty constructor
//
//*note: .GetConstructor can return null.
object obj = null;
T tObj = default(T);
ConstructorInfo ci = type.GetConstructor(TypeInfo.EmptyTypes);
if (ci != null)
{
obj = ci.Invoke(new object[] { /* Empty */});
tObj = obj as T;
}
if (tObj == null)
throw new InvalidCastException("Fatal error occurred within NavigationService (GetConstructor). Type: " + type.ToString());
return tObj;
}
:
ConstructorInfo ci = type.GetConstructor(TypeInfo.EmptyTypes);
例外が読み取ります。
「System.NullReferenceException」種類の例外がLWDCloudManager.exeで発生したが、ユーザーコードで処理されなかった
追加情報:オブジェクト参照がオブジェクトのインスタンスに設定されていません。
この問題を解決する方法や、リリースモードでのみ発生する可能性がある理由を深く理解する方法については、他にもご意見がありますか?
'type'はヌルですか?もしそうなら、このコードだけではなぜそれを伝えるのも不可能です。例外が発生したときにスタックを調べ、誰がこのメソッドを呼び出したのか、呼び出し元がnullを渡した理由を確認します。 –
そのエラーを解釈すると、 'type'変数が' null'であるか、 'GetConstructor'が' null'を返したことを意味します。私にとっては、前者のように見えるかもしれませんが、後者も可能性があります(https://msdn.microsoft.com/en-us/library/h93ya84h(v = vs.110).aspx) (戻り値の文書の注記を参照)。 'type'が' null'の場合、例外を投げてみることができますか? –
この問題は、リリースモードでのみ発生するという問題があります。だから私は内部例外や呼び出しスタックにアクセスすることはできません。しかし、デバッグモードでチェックすると、引数 "type"はnullとして渡されません。 – KSF