14

Nuget は、間違いなく非常に効果的なパッケージングおよび配布システムです。ただし、アセンブリ ファイルの管理が面倒になる場合があります。これは、サイト内の多く (30 以上) のサブアプリケーションが参照を継承するように設定されている Web アプリケーションで特に顕著です。私の場合、すべての子プロジェクトのライブラリを簡単に更新できるため、単一の継承ポイントが望ましいです。これらのアセンブリをルート ディレクトリに確実に格納することが問題になってきました。これを管理するために、これらの特定のライブラリに GAC を使用したいと思います..

これらのライブラリを nuget パッケージ スクリプトを介して GAC にインストール/更新する方法はありますか? 私はいつでも従来の手段に頼ることができますが、可能であればこれに Nuget を利用したいと考えています。アセンブリはサーバー GAC に追加されますが、パッケージの目的は、開発者がアセンブリをローカル GAC に簡単にインストールし、ローカル/サーバー環境間で同じ参照を維持できるようにすることです。

4

1 に答える 1

8

PowerShell GACから PowerShell スクリプトを使用してアセンブリを GAC にインストールできるため、 install.ps1 スクリプトで確実にこれを実行できます。

ただし、注意が必要です。これを行うと、ほとんどの人が望む動作が得られない可能性があります。各プロジェクトは、特定のバージョンへの厳密な名前の参照を使用します。1 つのプロジェクトがパッケージを更新したからといって、他のプロジェクトがパッケージを更新するわけでも、GAC で新しいバージョンを使用するわけでもありません。新しいバージョンは古いバージョンを置き換えます。その場合、プロジェクトが使用するバージョンは、nuget がインストールされていると信じているバージョンと一致しません!

したがって、使用されているアセンブリのバージョンを正確に判断することが非常に難しくなる可能性があります。通常、ナゲットがインストールされたパッケージを見るだけで、何を持っているかをすぐに知ることができます。

私の場合、nuget を使用してバイナリを Git の外部に保持していますが、一部のバイナリには WinForms デザイナーが関与しており、アセンブリが GAC にない場合、非常に怒っています。弾丸をかみ砕いてアセンブリをGACに入れるまで、無限の問題が何度もありました。今では問題なく動作します。そのため、nuget を介してプライベート カスタム アセンブリを GAC に登録しているため、自動的にダウンロードして登録されますが、1 つのソリューションがあり、すべてのプロジェクトが同時にアップグレードされることが保証されています。

于 2014-04-17T18:52:09.187 に答える