2

私は、製品アプリケーションの構築に使用される一連の共通フレームワーク アセンブリの開発と保守を担当しています。これらのアセンブリは比較的新しく、新しい機能が実装されるなど、流動的な状態にあります。その結果、再構築や再配布が頻繁に行われることは珍しくありません。アセンブリが安定化するにつれて、これは減少すると予想されますが、現在はそうです。

現在、アセンブリは、開発プロジェクトが同じアセンブリを参照できる共通フォルダーに配置されています。更新の適用は、ファイルを置き換えるのと同じくらい簡単で、開発プロジェクトは、次回のロードおよびビルド時に変更を自動的に取得します。

私が抱えている問題は、フレームワーク上に構築されたアセンブリのいくつかの「レイヤー」がある可能性があることです。たとえば、すべてのアプリケーションで共有されるコア ライブラリと、コアを参照し、すべてのサーバー アプリケーションで共有されるサーバー ライブラリがあります。フレームワーク アセンブリが更新されるたびにすべての依存関係も再構築する必要があるため、これは非常に大きなタスクになります。新しいバージョンがリリースされるたびにすべての開発者がシステムを更新する必要があるため、GAC を使用できるとは思えません。

パブリッシャー ポリシーを調査しましたが、いくつかの理由から、これで問題が解決するかどうか疑問があります。

  • 1 つには、フレームワーク アセンブリを再構築するたびにファイルを再作成したくありません。このプロセスを自動化する方法はありますか?

  • アセンブリを GAC に入れる必要があるかどうかはわかりません。前述したように、アセンブリの新しいバージョンをリリースするたびに、開発者に再インストールや更新などを強制したくありません。

  • ネットワークのセットアップと構成を制御できないため、ファイルをネットワーク共有に配置して、「信頼」の問題全体を回避する必要があります。さらに、当社の開発者の多くは時々接続された方法で作業しており、切断されたときにファイルを利用できるようにしたいと考えています。

目標は、これらのアセンブリを使用しているアプリケーション開発者に対して、これらのアセンブリの更新を透過的にすることです。アプリケーションのインストール時にこれらのアセンブリをターゲット マシンの GAC にインストールすることは間違いありませんが、開発目的ではそうしたくありません。プロジェクトは異なるチームによって開発されているため、各アプリケーションのソリューションにプロジェクトを含めることも合理的ではありません。

これらの要件を抱えているのは私だけだとは想像できません。誰かが経験と知恵を共有して、私を解決策に導いてくれることを願っています。ありがとう!

4

2 に答える 2

1

必ずしもアセンブリを GAC にインストールする必要はありません。セットアップでこれを必要とするものはありません。

ここでの主な問題は、アセンブリがそのすべての依存関係を強制的に再構築し、これらすべてが共有の場所に配置されるようにすることです。

ここでの最も簡単なオプションは、共有アセンブリの 1 つが更新されるたびにすべてを再構築するビルド サーバーを用意することでしょう。これには、ビルドがチェックインされるたびに、コード メトリクスや静的コード分析などを実行するなど、ビルドで他の "スクリプト" を潜在的に実行できるという利点もあります。

その後、ビルド サーバーにすべてを共有の場所にコピーさせることができます。プロジェクトが共有の場所から参照し、特定のバージョンに制限しないように明示的に指定している場合、すべてが正常に機能するはずです。

于 2009-09-14T17:33:22.603 に答える
0

NuGet はこの問題を解決しました。共有アセンブリ、フレームワークなどをネットワーク上のプライベート リポジトリから NuGet パッケージとして配布することで、更新を簡単に投稿し、必要に応じてクライアント コードに適用することができます。

于 2011-11-17T15:18:18.383 に答える