Я разрабатываю сборку, которая должна быть установлена в GAC, и как часть шага после сборки я гарантирую, что GAC обновляется после каждой сборки. Если я создаю (Visual Studio) модульный тест (в сборке отдельных тестов) для вызова нового метода в тестируемом классе, то реализую метод в тестируемом классе (стиль TDD), затем run тест (CTRL R, T), тестируемая сборка и проект модульного тестирования, создаются (и сборка обновляется в GAC).
Тест не пройден (выдает исключение System.MissingMethodException для нового метода). Если я сейчас отладлю тест, то тест пройден, и после этого я смогу запустить тест, и он пройдет.
В рамках моего исследования я добавил бесконечный цикл в тест и затем запустил его. Я использовал Process Explorer, чтобы найти путь к DLL, которая загружается во время теста. Я нахожу это
в C: \ WINDOWS \ assembly \ temp \ 4XY349E7C5 есть дескриптор сборки. Используя трюк, который я нашел здесь , чтобы посмотреть в этом каталоге, я нахожу более старую версию моей dll, чем в GAC, и если я использую Reflector для проверки dll, я считаю, что она не содержит новый метод добавлено, что объясняет MissingMethodException.
Так почему VSTestHost.exe загружает dll в временный каталог, и есть ли какой-то способ для меня, чтобы убедиться, что используется правильная dll?