Заставить NCRUNCH соблюдать выходной путь из настроек проекта?

Я загрузил пробную версию NCrunch для Visual Studio 2013 и пытаюсь заставить ее работать с моим решением, которое работает нормально и имеет рабочие тесты MS Unit. Я могу заставить NCrunch собрать все проекты (смесь C # и C ++), но каждый тест не проходит со следующим сообщением:

Ошибка инициализации / очистки сборки: System.TypeInitializationException: инициализатор типа для «IDC_UnitTests.DataCollectorTests» выдал исключение. ---> System.IO.FileNotFoundException: не удалось загрузить файл или сборку IDC.dll или одну из их зависимостей. Указанный модуль не может быть найден. в IDC_UnitTests.DataCollectorTests..cctor ()

Выходной путь каждого проекта определяется следующим образом: .. \ Debug \

Похоже, что NCrunch не использует этот выходной путь, потому что 1. Это та же ошибка, которую я видел раньше, когда случайно не установил выходной путь одного из проектов на .. \ Debug 2. Когда я смотрю на Каталоги NCrunch (AppData \ Local \ NCrunch \ 18552 \ 69 \ Debug, я не вижу там все DLL проекта, как должен. Не уверен, что NCrunch организует такие вещи, как MSBuild, но это кажется подозрительным.

Любые идеи?

Спасибо, Дэйв


person Dave    schedule 03.01.2014    source источник
comment
Вы ожидаете, что все библиотеки DLL будут встроены в один и тот же каталог, и поэтому некоторые проекты, которые полагаются на другую DLL, не имеют ссылки, которая копирует нужную DLL, но jusdt обнаруживает, что она встроена в тот же каталог? Если это так, то я не думаю, что это будет работать с NCrunch из-за того, как он организует сборку.   -  person Sam Holder    schedule 03.08.2014


Ответы (1)


NCrunch создает отдельную «рабочую область» для каждой DLL, на которую имеется ссылка. Например, если у вас есть AssemblyA.Tests.dll, ссылающаяся на AssemblyA.dll, NCrunch создаст 2 рабочих пространства (в AppData \ Local \ NCrunch \, как вы выяснили) в 2 отдельных каталогах и сможет разрешать зависимости даже если библиотеки DLL не находятся в одном каталоге.

Из документации: «При обычной сборке VS эти файлы ресурсов будут размещены вместе с выходными сборками ссылающихся проектов. В NCrunch это не всегда так». Подробнее.

Однако, если вы загружаете сборку динамически (т.е. Assembly.Load()), по умолчанию среда выполнения ожидает, что DLL будет располагаться рядом с исполняемой сборкой, но ее там не будет. В таких случаях вам необходимо указать NCrunch перенести зависимости, используя опцию Копировать ссылочные сборки в рабочую область, к которой вы можете получить доступ из представления NCrunch, щелкнув правой кнопкой мыши целевую сборку и выбрав Настроить выбранный компонент.

введите здесь описание изображения

person Jeff    schedule 03.08.2015