Нужны ли расширения Visual Studio (VSIX) со строгим именем?
Шаблон VSPackage по умолчанию в Visual Studio 2012 SDK создает проект, который использует строгие имена.
Поскольку строгое именование является транзитивным, это означает, что любые ссылки, которые я добавляю (например, другой проект в том же решении или сторонняя зависимость), также должны иметь строгое имя.
Так как я не чувствую себя комфортно со сторонними зависимостями с сильными именами, я бы предпочел удалить сильные имена из моей VSIX.
Каковы недостатки этого?
1 ответ
Если вы уже развертываются в VSIX и вам ничего не нужно в GAC, то нет, Visual Studio не требует от вас подписи со строгим именем. Я считаю, что мастера шаблонов требуют строгой подписи имен, но только потому, что они должны быть установлены в GAC.
Я могу подумать о нескольких причинах, которые могут вам понадобиться в любом случае: если ваш пакет предоставляет публичный API, который используют другие расширения, вы можете ссылаться на общую DLL как другие люди, использующие ваш публичный API. Возможно, вы захотите подписать строгое имя двоичного файла общедоступного интерфейса, и в зависимости от того, как настроены ваши проекты, вам может понадобиться подписать строгое имя.
Кроме того, если вы не указали строгое имя, вы рискуете столкнуть имя с другим расширением. Если вы создали DLL с именем "Package.dll", и другое расширение также сделало это, и ни одно из вас не подписало свои двоичные файлы со строгим именем, возможно, CLR здесь будет немного запутан. Поэтому, если вы не подписали строгое имя, убедитесь, что имя вашей сборки является "достаточно уникальным", чтобы избежать этого риска.
Для чего стоит, когда мы тестируем внутренние службы языка Roslyn, мы просто делаем это, устанавливая VSIX, который содержит все биты Roslyn. Быстрый просмотр истории управления исходным кодом подразумевает, что мы первые два с половиной года не подписывали строгие имена для наших пакетов, пока в конечном итоге мы не стали частью процесса доставки кода от Microsoft.