ここで、GAC に関するいくつかの投稿と、共有アセンブリを GAC にインストールしてアプリケーションを展開してはならない理由を読みました。これは、クライアント マシン上のアプリケーションの更新をより簡単にするはずなので、理にかなっています。
ただし、開発中とビルド サーバー上で GAC が役立つと思われる領域が 2 つあります。
たとえば、Microsoft アプリケーション ブロックを使用する場合、それらを GAC にインストールして、そこで参照することができます。これは、開発者のマシンごとにパスへの絶対参照が異なる可能性があるため、これを行う方が簡単であるため、理にかなっています。また、すべての共有コンポーネントでネットワーク ドライブを共有するよりも優れています。
次に、おそらくビルド サーバーに対して同じことを行います。ただし、これに関する唯一の問題は、バージョン 2.0 のアプリケーション ブロックを使用するアプリがあることです。後で、バージョン 3.1 を使用するようにこれをアップグレードします。ある時点で、顧客が発見したバグをテストするためにそのアプリケーションの以前のバージョンを再作成する必要があるかもしれませんが、ビルドを再作成すると、最初にビルドされたアプリケーション ブロックのバージョン 2.0 ではなく、バージョン 3.1 が選択されます。これは本当ですか、それとも GAC にある限り、古いプロジェクト ファイルは古いバージョンの dll を引き続き参照しますか?
この特定の点について、あなたの考え/意見は何ですか?
共有コンポーネントのすべてのバージョン (ダウンロードまたはビルド) を MSI としてすべての開発者に配布できるようにしたいと考えています。MSI は GAC にインストールされ、アプリケーション インストーラーの一部として顧客のマシンに「XCOPY」で展開されます。これはこれを行うための最良の方法ですか?