この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 46998|答える: 2

[出典] .NETは完全な参照アセンブリアセンブリを取得できません

[リンクをコピー]
掲載地 2020/08/22 10:41:02 | | | |
使う。 .NETでロードアセンブリを取得する方法は不完全ですが、他のライブラリを参照していますが、呼び出しなしではロード済みアセンブリでは取得できません。この記事ではWinFormや ASP.NET で完全なアセンブリを取得する方法を紹介しています。

紹介

使う。 .NETでロードアセンブリを取得する方法は不完全ですが、他のライブラリを参照していますが、呼び出しなしではロード済みアセンブリでは取得できません。この記事ではWinFormや ASP.NET で完全なアセンブリを取得する方法を紹介しています。

ASP.NET(計測されていない)

.NET Frameworkは、必要な時までアセンブリを現在のAppDomainに読み込むのを先送りします。 例えば、SomeMethod()からサードパーティライブラリだけを呼び出す場合、サードパーティのDLLは通常SomeMethod()の最初の実行まで読み込まれません。

AppDomain.GetAssemblies() は現在の AppDomain に読み込まれたすべてのアセンブリを表示します。 BuildManager.GetReferencedAssemblies()はWeb.configやその他の場所から参照されたすべてのアセンブリのリストを返し、それらのアセンブリを現在のAppDomainに読み込みます。

コード:



Winフォーム

まずは下のコードを使ってロードされたアセンブリを取得してください。



取得されたアセンブリーの数は12で、以下の図に示されています。



他のライブラリのメソッドを呼び出さない場合、メインアプリケーションはdllを読み込みません。おそらくパフォーマンスのオーバーヘッドを節約するためで、他のライブラリのメソッドを初めて呼び出すときは少し遅くなることがあります。

修正されたコードを以下のように使用してください:





取得されるアセンブリの数は117で、原則としてはdllをアプリケーションディレクトリの下に置き、読み込むことです。

この場合、AppDomain.CurrentDomain.GetAssemblies()を呼び出すと、 ToList()メソッドの場合、117を超えることもある完全なアセンブリを得ることができます。

現在の集会を手に入れてください





先の:.NETは有効期限通知にRedisキャッシュを使用しています
次に:ServiceNowクラウドITビジネス向けのプロフェッショナルマネジメントツール
 地主| 掲載地 2020/12/25 15:50:46 |
掲載地 2021/09/22 20:39:35 |
学ぶことを...
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com