2014-01-30 4 views
1

У меня есть две DLL, app1.dll и app2.dll, которые используют одну и ту же третью dll, util.dll, которая может иметь несколько другое поведение при построении для определенного приложения.DLL Hell issues: Назначение сильных имен

Я хочу, чтобы app1.dll и app2.dll были изолированы относительно версий util.dll, которые они используют. В MSDN я читал, что назначение сильного имени util.dll - это решение, то есть это сильное имя содержит имя и версию DLL, а также отпечаток пальца из-за подписания.

В настоящее время я построить util.dll ...

  • для App1 с KeyFileApp1.snk и версии 1.0.0.1
  • для app2 с KeyFileApp2.snk и версии 1.0.0.2

и эти швы работают на целевом компьютере при развертывании приложений с соответствующей сборкой util.dll.

Однако, у меня есть некоторые неясности:

  1. было бы достаточно, чтобы построить util.dll всегда с версии 1.0.0.0, но с разными ключевыми файлами для обоих приложений и иметь оба приложения, используя правую DLL в конце ?
  2. Являются ли сильные имена рассмотренными только при помещении dll в глобальный кеш сборки или также при наличии его как частной сборки?
+0

Если бы я был вами, я определенно разделил бы две версии util.dll на номер версии (не обязательно должен быть основной), иначе вы просите адский ад, как вы упомянули в названии , – Grzenio

ответ

2
  1. да, вы можете иметь и с таким же именем и версией, но с разным публичным ключом. Это хорошее/поддерживаемое решение - зависит от вас. Скорее всего, путают больше людей, чем вы хотите. То есть никакой обычный человек не сможет сказать вам «открытый ключ», используемый DLL, но большинство людей могут щелкнуть правой кнопкой мыши и проверить детали, чтобы увидеть версию (если вы правильно ее настроили на своих сборках).

  2. сильное имя всегда считается. Обратите внимание, что если у вас есть локальная и GAC-копия GAC, то всегда будет, если версия в GAC приемлема.

Примечание:

  • сильных имена являются «вирусными», как вы не можете сильно именованную сборка зависят от одного без сильного имени. Будьте осторожны, так как вам понадобится много для ваших собраний, чтобы они были строго подписаны (не плохая вещь сама по себе) и имеют хороший план управления версиями.
  • вы можете в конечном итоге получить несколько версий одной и той же сборки, загруженной в процесс, либо подготовиться к ней, либо использовать политику издателя для сопоставления всех версий с последними.
Смежные вопросы