3

Silverlight dll に物理的に存在する特定の名前空間で型を列挙する必要があります。しかし、私はサーバー(asp.netアプリ)でそれをしなければなりません。

私は xap ファイルを持っています。それを zip で読み込んで、必要な dll を取得できます。

ただし、そのアセンブリをメモリにロードしたくありません (Silverlight アプリであるため、ロードされない可能性があると思います)。また、ロードされたアセンブリをアンロードできないことを覚えている限り (いくつかの文字列を取得するためだけにサーバー メモリをジャンクしたくありません)。

何か案は?

編集: ReflectionOnlyLoad は、Silverlight アセンブリでは機能しません。他のアイデアはありますか?

4

4 に答える 4

2

以下を使用する必要があります。

Assembly.ReflectionOnlyLoad(string assemblyString)

これにより、特別なコンテキストでアセンブリが (依存関係なしで) 読み込まれます。どのメソッドも実行できません。AppDomain 全体をアンロードせずに、このアセンブリをアンロードできます。

MSDN: Assembly.ReflectionOnlyLoad

于 2012-09-28T12:20:33.103 に答える
1

Mono.Cecilを使用して、.NETアプリケーションからSilverlightアセンブリ(またはさまざまな.NETランタイムアセンブリ)を検査できます。

于 2012-09-28T13:04:20.850 に答える
0

ロードする必要がありますが、Silverlightにロードする必要があり、列挙を行うにはSilverlightコードが必要になります。プラス面は、COM相互運用機能を介してロードする必要があるため、SLインスタンスを破棄するときにクリーンアップする必要があることです。

于 2012-09-28T12:20:08.570 に答える
0

ReflectionOnlyLoad を試してください。文字列 (アセンブリ ファイルへのパス) または byte[] (アセンブリの COFF イメージ - アセンブリを解凍して得られる結果の byte[] である必要があります) のいずれかを渡すことができます。

于 2012-09-28T12:18:01.223 に答える