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