2013-06-05 3 views
1

У меня есть проект Visual Studio, который ссылается на сборку, которую я также создал. Ниже приведен снимок экрана свойств моей ссылки на сборку в проекте. Когда я обновляю свою версию сборки до 1.1.0.0, мой проект выходит из строя, и я думаю, что это свойство является проблемой.Свойства ссылки проекта - Номер версии

Поскольку атрибут Version говорит 1.0.0.0, значит ли это, что он всегда будет искать мою сборку, которая имеет версию 1.0.0.0? И увеличение моей версии до 1.1.0.0 приведет к тому, что мой проект не увидит сборку вообще?

Version: 1.0.0.0

ответ

0

У вас есть 2 версии сильно имени сборки. Именно по дизайну поведения для других проектов, где скомпилировано против одной версии такой сборки, невозможно загрузить сборку с другой версией. Причиной является то, что изменение версии означает изменение API. В противном случае это будет обновление на месте с той же версией, поэтому более старый код может не работать корректно с более новой DLL.

Варианты:

  • Если нет никаких изменений API - не изменить версию сборки. Это означает, что вы можете отказаться от методов, но не добавлять/удалять методы/классы или изменять поведение.
  • Если вы контролируете все проекты в зависимости от этой сборки, перестройте все с новой ссылкой и остановите поддержку старой версии (если это возможно).
  • Предоставьте publisher policy в настройках, чтобы перенаправить запрос для более старой версии на новую. Это предполагает, что ваша новая версия действительно обратно совместима со старой.
  • Установите все версии в GAC или просто убедитесь, что приложения получают правильную версию сборки, помещая правильный рядом с каждым исполняемым файлом. Это почти единственный подход, когда вы не контролируете всех пользователей сборки, и в API есть значительные изменения.

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

Издательство: из статьи связаны выше:

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="myAssembly" 
          publicKeyToken="32ab4ba45e0a69a1" 
          culture="en-us" /> 
     <!-- Redirecting to version 2.0.0.0 of the assembly. --> 
     <bindingRedirect oldVersion="1.0.0.0" 
          newVersion="2.0.0.0"/> 
     </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 
Смежные вопросы