Microsoft Expression Encoder и Selenium + TeamCity
Я пытаюсь записать выполнение моих тестов Selenium с помощью Microsoft Expression Encoder. Я нашел много ответов о проблеме, с которой я сейчас сталкиваюсь, но никто из них не решил ее. Итак, у меня есть метод, который запускает процесс записи видео. Это так же просто, как
scj = new ScreenCaptureJob();
scj.OutputScreenCaptureFileName = logPath + "\\" + fileName + ".wmv";
scj.ScreenCaptureVideoProfile.FrameRate = 25;
scj.CaptureMouseCursor = true;
scj.Start();
Когда я запускаю его из Visual Studio 2015, он работает отлично. Но когда я запускаю его из TeamCity в одном из наших агентов сборки, я получаю следующее сообщение:
OneTimeSetUp: System.BadImageFormatException: Could not load file or assembly
'Microsoft.Expression.Encoder, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
or one of its dependencies. An attempt was made to load a program with an incorrect format
Теперь, что я прочитал на некоторых форумах, это связано с моим выбором архитектуры. В TeamCity на этапе сборки, который компилирует код, выбрана платформа "Любой ЦП", тогда как в Visual Studio выбран "Смешанные платформы".
Я уже пытался установить все для архитектуры x86 в TeamCity, заставить NUnit 3 работать как 32-битный процесс, а также изменить целевую архитектуру моего проекта. Ни одно из этих решений не сработало. Кто-нибудь имеет представление о том, что еще я мог бы сделать?
1 ответ
Вы, вероятно, установили Microsoft.Expression.Encoder из соответствующего пакета NuGet.
Вы также, скорее всего, не держите свои пакеты в системе контроля версий (как и должно быть).
По этой причине, когда TC проверяет код, отсутствуют пакеты узлов, что требует этапа сборки с использованием установщика NuGet, который восстановит ваши пакеты до того, как TC попытается построить код.