[解決済み] .NETアセンブリのLoadFileとLoadFromの違い?
質問
msdn のドキュメントを見ていたのですが、まだ少し混乱しています。
LoadFile
と
LoadFrom
を使用すると、アセンブリをロードするときに どなたか、よりよく説明するための例やアナロジーを提供していただけませんか。MSDNドキュメントではもっと混乱しました。また
ReflectionOnlyLoadFrom
と同じなのでしょうか?
LoadFrom
と同じですが、リフレクションモードでのみアセンブリをロードします。
私の.NETの経験は最高ではないので、LoadFileを使用するMSDNドキュメントに関するいくつかの質問をします。
1) それは何を意味するのでしょうか。
LoadFile
は、同じ ID を持つが異なるパスに配置されたアセンブリを検証しますか? ID(例)とは何ですか?
2) それは
LoadFile
は 'LoadFrom Context' にファイルをロードせず、ロード パスを使用して依存関係を解決しません。 これは何を意味するのでしょうか。どなたか例を示していただけませんか。
3) 最後に、それは次のように述べています。
LoadFile
は、LoadFrom が同じ ID で異なるパスを持つアセンブリをロードできないため、この限定されたシナリオで有用であると述べています。
どのように解決するのですか?
これでスッキリしましたか?
// path1 and path2 point to different copies of the same assembly on disk:
Assembly assembly1 = Assembly.LoadFrom(path1);
Assembly assembly2 = Assembly.LoadFrom(path2);
// These both point to the assembly from path1, so this is true
Console.WriteLine(assembly1.CodeBase == assembly2.CodeBase);
assembly1 = Assembly.LoadFile(path1);
assembly2 = Assembly.LoadFile(path2);
// These point to different assemblies now, so this is false
Console.WriteLine(assembly1.CodeBase == assembly2.CodeBase);
編集 : あなたが修正した質問で提起した質問に答えるために、あなたは間違いなく、次の文章を読みたいと思います。 スザンヌ・クック、アセンブリ・アイデンティティについて .
アセンブリがどのようにロードされるかを制御する多くのルールがあり、そのうちのいくつかは依存関係をどのように解決するかに関係しています。アセンブリAがアセンブリBに依存している場合、.NET はどこでアセンブリBを探すべきでしょうか?グローバルアセンブリキャッシュ、アセンブリAを見つけたのと同じディレクトリ、あるいはまったく別の場所でしょうか。さらに、そのアセンブリの複数のコピーを見つけた場合、どのように使用するアセンブリを選択する必要がありますか?
LoadFrom
は一組のルールを持っていますが
LoadFile
には別のルールがあります。を使う理由はあまり想像がつきません。
LoadFile
を使う多くの理由を想像するのは難しいですが、 同じアセンブリの異なるコピーでリフレクションを使う必要がある場合、 それはあなたのためにあります。
関連
-
[解決済み] CLSID {XXXX} を持つコンポーネントの COM クラスファクトリの取得は、次のエラーにより失敗しました: 80040154。
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] .NET Coreと.NET Standard Class Libraryのプロジェクトタイプの違いは何ですか?
-
[解決済み] AssemblyVersion、AssemblyFileVersion、AssemblyInformationalVersionの違いは何ですか?
-
[解決済み] .NETにおけるstructとclassの違いは何ですか?
-
[解決済み] C#の==とEquals()の違いについて
-
[解決済み] .NETのManualResetEventとAutoResetEventの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】この動詞型ではcontent-bodyを送信できない
-
[解決済み] アセンブリから型を読み込めなかったエラー
-
[解決済み] app.configのマッピングがないアセンブリのapp.configの再マッピングを考慮する。
-
[解決済み] ポストバックまたはコールバックの引数が無効です。 イベント検証は '<pages enableEventValidation="true"/>' を使用して有効になっています。
-
[解決済み] C++/CLIにおけるキャレット('^')の意味は?
-
[解決済み] DockPanelを空きスペースいっぱいに表示させる方法
-
[解決済み] Nuget接続の試行に失敗しました。"Unable to load service index for source"。
-
[解決済み] DelphiとDelphi.NETの違いについて
-
[解決済み] Moq Callbackについて教えてください。
-
[解決済み] PowerShellで文字列がNULLまたは空であるかどうかを確認するにはどうすればよいですか?