フロントエンドの変更のみで多くのWebサイトに展開されたWebアプリケーションがあり、共有バックエンド部分にはGACでDLLがあるため、その1つのDLLを更新するだけで、すべてのサイトが更新を取得します。
/ binフォルダーのDLLでGACをオーバーライドして、リリースされる前に新機能をテストする方法はありますか?
参照されているDLLと同じバージョン番号がある場合、GACが使用されます。
バージョン番号を増やし、新しいバージョン番号を参照するWebサイトを再構築し、/ binディレクトリに新しいバージョンを配置すると、そのDLLが使用されます。
バージョン番号を変更したくない場合は、ほとんど運がありません。
.NETが強力な名前付きアセンブリを読み込むとき、最初に使用するバージョン番号を決定しようとします。最初に参照を介してこれを行い、次に publisher policies を探し、次に構成ファイルで binding redirects を探します。
これを実行した後、GACでアセンブリを探し、任意の コードベースを指定 で探し、DLLのさまざまなファイルシステムフォルダーをプローブします。これらの手順のいずれかで適切なバージョンのアセンブリが見つかると、停止します。
強力な名前付きアセンブリのバージョン番号を変更しない場合、.NETはGACで元のバージョンを見つけ、検索を停止します。見つかった時点で停止し、GACを最初に見るため、新しいバージョン番号も指定しない限り、アセンブリのコードベースを指定しても効果がないことに注意してください。
<codebase>
Elementを使用して、\ binフォルダー内のアセンブリでGACをオーバーライドできました。
Web.configファイルで<codebase version="1.2.3.4" href="/bin/MyAssembly.dll" />
を指定することにより、GACで指定されたバージョンではなく、このバージョンを使用するようにアプリケーションに指示できます。
また、アセンブリの場所を指定するための <probing>
要素をご覧ください。
私はアダム・シルズと同じ考えを言っているかもしれないと思うが、私の理解のためにそれを言い直した。私自身のテストでは、次のようになります。
これが正しいことを願っています...
Windows Software Development Kit(SDK)に含まれているAssembly Binding Log Viewer(Fuslogvw.exe)を使用して、ログファイルのバインディング情報を表示できます。
s