web-dev-qa-db-ja.com

アセンブリで型を取得します(エラー:System.Reflection.ReflectionTypeLoadException)

タイプ「例外の詳細:System.Reflection.ReflectionTypeLoadException:要求されたタイプの1つ以上をロードできません。詳細についてはLoaderExceptionsプロパティを取得してください。」の例外を受け取りました。次のコードで:

public IEnumerable<Type> FindClassesOfType(Type assignTypeFrom, IEnumerable<Assembly> assemblies, bool onlyConcreteClasses = true)
    {
        foreach(var a in assemblies)
        {
            foreach (var t in a.GetTypes())

各アセンブリで定義されているタイプを取得する必要がありますが、生成できないようです。

Dllの削除、クリーンソリューション、リロードソリューションなど、間違ったアセンブリの作成に関連するすべての一般的な手順をすでに実行しましたが、何も起こりませんでした。

エラーの詳細情報を取得する方法を見つけることによってこの問題を解決するためのアイデアを要求したい、またはアセンブリが問題などを生成していることを見つけたいと思います。現在の例外メッセージは、どちらが問題であるかを理解するのに非常にあいまいです。

どうもありがとうございます。 ps:追加情報、再構築アクションを実行すると、すべてのプロセスがエラーなしで正しく生成されます。

16
s_h

エラーメッセージには、必要なものがすべて記載されています。

try {
    // your code
} catch (ReflectionTypeLoadException ex) {
    // now look at ex.LoaderExceptions - this is an Exception[], so:
    foreach(Exception inner in ex.LoaderExceptions) {
        // write details of "inner", in particular inner.Message
    }
}
22
Marc Gravell

Entity Frameworkを使用する場合は、Web.Configのバージョンがプロジェクトで参照されているものと同じであるかどうかを確認してください。

4
Fernando JS

DLLはあなたが作成したものですか?どのフレームワークをターゲットにしていますか?

私は今この問題に直面しています。外部ライブラリをフレームワーク3.5(CLR2を使用)でコンパイルしても、DLLはインポートされません。エラーは同じです。ライブラリターゲットフレームワークを再構築する際の問題は解決しました。 3.0で、現在は機能しているようです。dllをPluginsフォルダーに問題なく残しています。

nityフォーラム にも同様の問題がたくさんあります。

おそらくあなたはすでに解決策を持っていますが、これは将来それを必要とする人を助けることができます(私が必要としたように)。

宜しくお願いします!

2
Rafael Brasil