nUnit - игнорировать копию библиотеки DLL GAC

Я использую nUnit для модульного тестирования сборки.

Сборка находится в каталоге вывода моего проекта (\ bin \ debug) и загружается в nUnit (Сборки> Добавить сборку) из этого места.

Однако более старая версия также находится в GAC, и nUnit выбирает ее вместо нее.

Я, конечно, могу удалить старую версию и переустановить в GAC после сборки, но это займет некоторое время - каким-либо способом заставить nUnit (или, что более вероятно, .NET framework) выбрать версию из каталога bin \ debug?

РЕДАКТИРОВАТЬ

AssemblyVersion (и, следовательно, строгое имя) обеих версий фиксированы - это единственная версия файла, которая изменяется согласно КБ 556041 - Как использовать версию сборки и версию файла сборки


person Ryan    schedule 20.09.2010    source источник
comment
Это должно происходить только в том случае, если ваш bin \ debug-copy (и ссылка на ваш проект) имеет тот же номер версии, что и номер в GAC.   -  person sisve    schedule 25.01.2011
comment
Номера AssemblyVersion такие же, я добавил дополнительные комментарии, объясняющие эту ключевую информацию, я плохо!   -  person Ryan    schedule 26.01.2011


Ответы (2)


Вы можете попробовать сделать <bindingRedirect> в своем файле .config для перенаправления на ваша локальная сборка и не использовать ту, что установлена ​​в GAC.

Когда вы создаете приложение .NET Framework на основе сборки со строгим именем, приложение по умолчанию использует эту версию сборки во время выполнения, даже если доступна новая версия. Однако вы можете настроить приложение для работы с более новой версией сборки.

...

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity
            name="myAssembly"
            publicKeyToken="32ab4ba45e0a69a1"
            culture="neutral" />
        <bindingRedirect
            oldVersion="1.0.0.0"
            newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Вам также может быть интересно:

Надеюсь, это поможет!

person Martin Buberl    schedule 25.01.2011
comment
+1 в качестве хорошей ссылки (хотя я знал о перенаправлениях привязки), но это мне не помогает, поскольку версия в GAC имеет ту же AssemblyVersion - person Ryan; 26.01.2011
comment
Что ж, если версия сборки такая же, и вы не можете ее изменить, у вас почти нет шансов, потому что .NET сначала находит ее из GAC. Это не поведение nUnit, это стандартное поведение .NET. - person Martin Buberl; 27.01.2011

В этой ситуации я стараюсь НЕ подписывать сборку при модульном тестировании, пока я не буду готов ее развернуть. Это одноэтапный процесс, когда вы переходите к свойствам проекта и снимаете флажок «Подписать сборку». Когда вы перекомпилируете, в следующий раз, когда вы запустите тесты, NUnit заберет его из локальной папки bin, поскольку неподписанные сборки не могут быть развернуты в GAC. Я обнаружил, что даже если у вас уже есть версия сборки в GAC, она все равно будет принимать неподписанную версию, если вы ссылаетесь на тестируемую сборку в проекте. Когда вы закончите тесты, вы снова включите настройку и выполните развертывание.

Не идеально, так как теперь вам нужно пройти этот дополнительный шаг, но как можно ближе, не выполняя большого количества работы.

person Tom    schedule 25.02.2013