[解決済み] アセンブリバインディングリダイレクト:どのように、そしてなぜ?
2022-04-25 01:31:50
質問
これは問題の質問ではなく、アセンブリバインディングのリダイレクトの動作に関する一般的な理解のための質問です。
クエリ
- バインディングリダイレクトでメジャーバージョンのみが表示され、マイナー、ビルド、リビジョン番号が表示されないのはなぜですか?
-
メジャーバージョンに変更があった場合のみ、旧バージョンと新バージョンが変わるのですか?
<dependentAssembly> <assemblyIdentity name="FooBar" publicKeyToken="32ab4ba45e0a69a1" culture="en-us" /> <bindingRedirect oldVersion="7.0.0.0" newVersion="8.0.0.0" /> </dependentAssembly>
解決方法は?
なぜバインディングリダイレクトが必要なのか?ライブラリBと、バージョン1.1.2.5のライブラリCを参照しているアプリケーションAがあるとします。ライブラリBもライブラリCを参照していますが、そのバージョンは1.1.1.0です。同じアセンブリの異なるバージョンを実行時にロードすることはできないので、ここで衝突が発生します。この衝突を解決するために、バインディング・リダイレクトを使用することがあります。そのためには、アプリケーションAのapp.configファイルの以下の部分に以下を追加します。
configuration > runtime > assemblyBinding
セクション(参照
ここで
は、完全な設定ファイルの例です)。
<dependentAssembly>
<assemblyIdentity name="C"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<bindingRedirect oldVersion="1.1.1.0" newVersion="1.1.2.5" />
</dependentAssembly>
また、マッピングするバージョンの範囲を指定することもできます。
<bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.2.5" />
これで、バージョン 1.1.1.0 の C を参照してコンパイルされたライブラリ B は、実行時にバージョン 1.1.2.5 の C を使用することになります。もちろん、ライブラリCが後方互換性を持っていることを確認した方がよい。そうしないと、予期せぬ結果を招くかもしれない。
メジャーなライブラリだけでなく、あらゆるバージョンのライブラリをリダイレクトすることができます。
関連
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】データが存在しないのに読み込もうとする試みが無効である
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] 辞書を繰り返し使用するには?
-
[解決済み] 乱数(int)を生成する方法を教えてください。
-
[解決済み] Microsoft Officeをインストールせずに、C#でExcel(.XLSおよび.XLSX)ファイルを作成するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】IntPtrとは一体何なのか?
-
[解決済み】「namespace」なのに「type」のように使われる。
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。
-
[解決済み] .NetアセンブリのPublicKeyTokenを取得する [重複] [重複