Мое приложение состоит из трех сборок: один EXE-файл, который ссылается на пару DLL. Библиотеки являются частными для моего приложения - они используются только этим исполняемым файлом.
Должны ли эти сборки иметь строгое название?
FxCop предполагает, что они должны - для всех сборок, которые он в настоящее время производит:
CA2210: знак со строгим именем.
Однако этот совет гласит:
Как правило, следует избегать сборок EXE приложений с сильными именами.
и
возможно, вы захотите избегать компонентов с сильными именами, которые являются частными для вашего приложения.
Должен ли я дать этим сборкам строгое имя? Каковы преимущества этого (или нет) в этом случае?
Edit:
Рассматривая несколько приложений со схожей структурой, похоже, по этому вопросу нет единого мнения. Двоичные файлы Paint.NET и Crack.NET не имеют строгого имени, тогда как двоичные файлы .NET Reflector и Snoop являются.
Интересно, что в пакете Expression Microsoft применили последний подход: например, в Expression Blend они решили использовать в качестве знака строгого имени и Blend.exe, и сопровождающие его библиотеки DLL (например, Microsoft.Expression.Blend.dll). .
Кажется, что я вряд ли получу простой ответ на мой первый вопрос: «Должен ли я дать этим сборкам строгое имя?». Тем не менее, мой второй вопрос все еще стоит:
Есть ли какие-либо преимущества для бинарных файлов с подписью со строгим именем в этой ситуации? Или есть ли какие-то преимущества, если вы этого не сделаете?
Редактировать 2:
Если нет веских причин пойти в ту или иную сторону, я склонен дать своим собраниям строгое имя. Поэтому мне было бы интересно узнать, может ли кто-нибудь расширить эту тему (из первой ссылки):
«Строгое именование может затруднить управление зависимостями и добавить ненужные накладные расходы для частных компонентов.»