Я использую шаг после сборки на моей сборке C #, чтобы выставить сигнатуру функции из моей dll. На этом шаге используется инструмент ExportDll из http://www.codeproject.com/KB/dotnet/DllExport.aspx. Однако, если я запускаю свою dll через mstest и пытаюсь получить отчет о покрытии кода, я получаю следующую ошибку:
Instrumentation error while trying to process the file MyAssembly.dll
Error VSP1011 : Unable to obtain debug information. Link with the /Profile linker switch.
Это странно, учитывая, что в сборке нет неуправляемого кода (кроме нескольких подписей P / Invoke). Если я сделаю шаг после сборки, мой код будет правильно оснащен, и я смогу получить отчет о покрытии кода. Поэтому я могу только сделать вывод, что это должен быть шаг после сборки, а не что-то в самом коде.
Я опираюсь на идею запуска своих модульных тестов через не-ExportDll-версию кода при сборке и распространении пост-ExportDll-версии. Поскольку в основном меня интересует, тестируется ли код, а не могут ли другие компоненты найти функцию через экспорт DLL, я не считаю это плохим решением. Тем не менее, я чувствую, что это может быть просто кошмаром в управлении сборкой и необходимость объяснить команде «использовать эту сборку, а не эту сборку».
Кто-нибудь имел опыт модульного тестирования dll, который проходил через этот инструмент? Или, может быть, у кого-то есть опыт применения сборки, которая была скомпилирована, декомпилирована и повторно собрана с помощью ildasm / ilasm?