2010-09-20 3 views
6

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

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

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

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

EDIT

AssemblyVersion (и, следовательно, сильное имя) обе версии фиксированы - его только версия файла, который изменяется в соответствии с KB 556041 - How to use Assembly Version and Assembly File Version

+0

Это должно произойти только в том случае, если ваша bin \ debug-copy (и ваша ссылка на проект) имеет тот же номер версии, что и номер в GAC. – sisve

+0

Номера AssemblyVersion одинаковы, я добавил дополнительные комментарии, объясняющие этот ключевой бит информации, мне плохо! – Ryan

ответ

1

Вы могли бы попытаться сделать <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> 

Это может быть интересно для вас:

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

+2

+1 как его хорошая ссылка (я знал о переадресации привязки хотя), но это не помогает мне, поскольку версия в GAC имеет тот же AssemblyVersion – Ryan

+0

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

0

Что я обычно делаю в этой ситуации: НЕ подписывать сборку при модульном тестировании, пока я не готов ее развернуть. Это одноэтапный процесс, когда вы переходите к свойствам проекта и очищаете параметр Sign the assembly. Когда вы перекомпилируете, в следующий раз, когда вы запустите тесты, NUnit выберет его из локальной папки bin, так как неподписанные сборки не могут быть развернуты в GAC. Я обнаружил, что даже если у вас уже есть версия сборки в GAC, она все равно будет использовать неподписанную версию, если вы ссылаетесь на тестируемую сборку проектом. Когда вы закончите тестирование, вы снова включите эту установку и развернете ее.

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

Смежные вопросы