2012-04-24 2 views
1

У меня есть проект, в котором у меня есть некоторые классы C#, которые я создаю, используя csc в моем скрипте ant. Я также написал некоторые модульные тесты, которые я хочу протестировать с помощью NUnit2.6. Мой тестовый класс и фактический класс относятся к одной DLL, которая скомпилирована с помощью String Key Name (.snk), если я устанавливаю DLL DLL в свой GAC (gacutil/i myDLL.dll) все работает нормально. Как только я удалю эту DLL из моего gac, я получаю следующую ошибку для всего теста во время сборки, когда я пытаюсь запустить свой тест с помощью NUnit;NUnit не может загрузить dll со строкой Имя ключа

Test Error : fromJDynTest1 
[exec] System.IO.FileNotFoundException : Could not load file or assembly 'myDLL, Version=5.1.0.0, Culture=neutral, PublicKeyToken=c0409b584f86b2d6' or one of its dependencies. The system cannot find the file specified. 
[exec] at fromJDynTest1() 
... 
... 

Кто-нибудь знает, как это решить. Дайте мне знать, если вам нужна какая-либо другая информация.

Благодаря

-

SJunejo

ответ

1

код вы проверяете не можете увидеть сборку в вопрос, когда вы поместите его в GAC, он может видеть сборку. Вам необходимо убедиться, что код, который вы тестируете, имеет сборку в каталоге bin при компиляции (возможно, для копирования в localhost в каталоге задано значение false).

Причина, по которой я уверен, что это не зависимость (которая упоминается в сообщении) заключается в том, что ситуация разрешена, когда сборка помещается в gac. Эта ошибка вряд ли вызвана тем, что сборка сильно названа.

Несоблюдение того, что тестовый код относится к сборке, и что тестовый код либо не имеет ссылки, либо имеет такую ​​же проблему (не в его скомпилированном каталоге).

Помогло бы, если бы вы разместили фактический тест или структуру проекта.

.net находит сборки следующим образом:

  1. Определяет правильную версию сборки, изучив применимые конфигурационные файлы, включая файл приложения конфигурации, файл политики издателя, и файл конфигурации компьютера. Если файл конфигурации находится на удаленном компьютере, среда выполнения должна сначала найти и загрузить файл конфигурации приложения.
  2. Проверяет, связано ли имя сборки раньше и, если да, использует ранее загруженную сборку. Если он потерпел неудачу, прежде чем он снова потерпит неудачу.
  3. Проверяет гак. Если сборка найдена там, среда выполнения использует эту сборку.
  4. Зонды для сборки (если вы открываете файл .csproj в текстовом редакторе, вы увидите hintpaths, которые пытаются и помогают .net найти сборку).
+0

Я добавил путь сборки в переменную окружения PATH перед выполнением тестов .... Нужно ли добавлять к другому пути? – SJunejo

+0

это не будет иметь никакого значения, если оно находится в переменной env пути. вы должны следовать пути проверки .net, который описывается в подробностях extem здесь http://msdn.microsoft.com/en-us/library/yx7xezcf(v=vs.110).aspx. Ваше приложение/тесты просто не могут видеть сборочная проверка сборки ссылается и находится в соответствующих каталогах bin/debug bin/release или в основном бункере веб-приложения. –

+1

Спасибо, я скопировал мою внешнюю DLL в каталоге NUnit/bin, и все отлично поработало. Спасибо за ваше место в ответе. – SJunejo

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