9

Visual Studio 2012 SDK の既定の VSPackage テンプレートは、厳密な名前付けを使用するプロジェクトを生成します。

厳密な名前付けは推移的であるため、追加するすべての参照 (同じソリューション内の別のプロジェクト、またはサードパーティの依存関係など) も厳密な名前にする必要があることを意味します。

サードパーティの依存関係に厳密な名前を付けることに慣れていないので、VSIX から厳密な名前を削除したいと思います。

これを行うことの欠点は何ですか?

4

1 に答える 1

4

既に VSIX でデプロイ可能であり、GAC で何も必要ない場合は、いいえ。Visual Studio では、厳密な名前で署名されている必要はありません。テンプレート ウィザードには厳密な名前の署名が必要だと思いますが、それは GAC にインストールする必要があるからです。

とにかくしたいいくつかの理由を考えることができます: あなたのパッケージが他の拡張機能が消費する公開 API を公開している場合、公開 API を消費する他の人々として共通の DLL を参照している可能性があります。パブリック インターフェイス バイナリに厳密な名前で署名したい場合があり、プロジェクトの設定方法によっては、すべてに厳密な名前で署名する必要がある場合があります。

また、名前の署名を強化しなかった場合は、別の拡張機能と名前が衝突する危険があります。"Package.dll" という名前の DLL を作成し、別の拡張機能も作成した場合、どちらも厳密な名前でバイナリに署名していない場合、ここで CLR が少し混乱する可能性があります。したがって、厳密な名前の署名を行っていない場合は、このリスクを回避するために、アセンブリ名が「十分に一意」であることを確認してください。

Roslyn 言語サービスを内部でテストするときは、すべての Roslyn ビットを含む VSIX をインストールするだけです。ソース管理の歴史をざっと調べてみると、最初の 1 年半はパッケージ バイナリに厳密な名前で署名していませんでしたが、最終的に Microsoft からコードを出荷するプロセスの一環として署名する必要がありました。

于 2013-05-08T23:44:59.850 に答える