Visual Studio 2012 SDK の既定の VSPackage テンプレートは、厳密な名前付けを使用するプロジェクトを生成します。
厳密な名前付けは推移的であるため、追加するすべての参照 (同じソリューション内の別のプロジェクト、またはサードパーティの依存関係など) も厳密な名前にする必要があることを意味します。
サードパーティの依存関係に厳密な名前を付けることに慣れていないので、VSIX から厳密な名前を削除したいと思います。
これを行うことの欠点は何ですか?
Visual Studio 2012 SDK の既定の VSPackage テンプレートは、厳密な名前付けを使用するプロジェクトを生成します。
厳密な名前付けは推移的であるため、追加するすべての参照 (同じソリューション内の別のプロジェクト、またはサードパーティの依存関係など) も厳密な名前にする必要があることを意味します。
サードパーティの依存関係に厳密な名前を付けることに慣れていないので、VSIX から厳密な名前を削除したいと思います。
これを行うことの欠点は何ですか?
既に VSIX でデプロイ可能であり、GAC で何も必要ない場合は、いいえ。Visual Studio では、厳密な名前で署名されている必要はありません。テンプレート ウィザードには厳密な名前の署名が必要だと思いますが、それは GAC にインストールする必要があるからです。
とにかくしたいいくつかの理由を考えることができます: あなたのパッケージが他の拡張機能が消費する公開 API を公開している場合、公開 API を消費する他の人々として共通の DLL を参照している可能性があります。パブリック インターフェイス バイナリに厳密な名前で署名したい場合があり、プロジェクトの設定方法によっては、すべてに厳密な名前で署名する必要がある場合があります。
また、名前の署名を強化しなかった場合は、別の拡張機能と名前が衝突する危険があります。"Package.dll" という名前の DLL を作成し、別の拡張機能も作成した場合、どちらも厳密な名前でバイナリに署名していない場合、ここで CLR が少し混乱する可能性があります。したがって、厳密な名前の署名を行っていない場合は、このリスクを回避するために、アセンブリ名が「十分に一意」であることを確認してください。
Roslyn 言語サービスを内部でテストするときは、すべての Roslyn ビットを含む VSIX をインストールするだけです。ソース管理の歴史をざっと調べてみると、最初の 1 年半はパッケージ バイナリに厳密な名前で署名していませんでしたが、最終的に Microsoft からコードを出荷するプロセスの一環として署名する必要がありました。