2017-10-02 3 views
1

Reflection APIを使用して.NETアセンブリをブラウズする.NETで書かれたアプリケーションがあります。このアプリケーションを使用して.NET Core 2.0でコンパイルされたdllを参照すると、次の例外を除いて失敗します。これに関する助けをいただければ幸いです。.NET Frameworkで記述されたアプリケーションから.NET Coreアセンブリをロードする方法は?

Unhandled Exception: System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information. 
    at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module) 
    at System.Reflection.RuntimeModule.GetTypes() 
    at System.Reflection.Assembly.GetTypes() 
    at ConsoleApp1.Program.NewMethod() in c:\Users\faisal_iqbal\documents\visual studio 2017\Projects\CoreX\ConsoleApp1\Program.cs:line 23 
    at ConsoleApp1.Program.Main(String[] args) in c:\Users\faisal_iqbal\documents\visual studio 2017\Projects\CoreX\ConsoleApp1\Program.cs:line 16 
+0

あなたは 'Assembly.ReflectionOnlyLoad()'を使用していますか? –

+0

@MartinUllrich私はそれを使ってみました。しかし、ポイントはSystem.Runtime.dllをロードできない点です – Faisal

+0

.NETCoreは非常に異なるフレームワークです。代わりに.NETStandard 2.0をターゲットにしてアセンブリを構築し、アプリを少なくとも4.6.1にターゲティングする場合は、これを行うことができます。 –

答えて

0

私自身の質問に答える。

NETCoreは非常に異なるフレームワークです。そのアセンブリを でビルドして、代わりに.NETStandard 2.0をターゲットにして、アプリを少なくとも 4.6.1に設定すると、これを行うことができます。

- ハンスアンパッサン

.NET Frameworkおよび.NETコアの両方が異なるフレームワークであるためには、それぞれがReflection API独自を有しています。

メタデータの読み取り専用のアセンブリを読み込む必要がある場合は、.NET Frameworkと.NETコアの両方で動作するMono.Cecilフレームワークを使用してください。 Reflectionは、アセンブリまたは依存アセンブリを読み込みません。これは単に、アセンブリ内

  • タイプなどのメタデータ情報を読み込むタイプ
  • などのタイプの
  • 名、フルネームと名前空間で
  • プロパティ、フィールドとメソッド...
関連する問題