Проблемы с запуском анализа кода из командной строки с помощью msbuild

Я использую VS2010 RC, ориентируясь на .NET 3.5. Я могу без проблем запускать анализ кода через Visual Studio. Однако когда я пытаюсь запустить анализ кода на нашем сервере CI, он не выполняется. Когда я пытаюсь построить с помощью msbuild 4.0, я получаю следующее исключение:

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ CodeAnalysis \ Microsoft.CodeAnalysis.targets (129,9): ошибка MSB4018: Неожиданный сбой задачи «CodeAnalysis».

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ CodeAnalysis \ Microsoft.CodeAnalysis.targets (129,9): ошибка MSB4018: System.TypeLoadException: не удалось загрузить тип 'System.Runtime.Versioning. TargetFrameworkAttribute 'из сборки' mscorlib, Версия = 4.0.0.0, Культура = нейтральный, PublicKeyToken = b77a5c561934e089

Как я уже сказал, он отлично работает, когда я запускаю его через VS.


person devlife    schedule 24.03.2010    source источник
comment
Оказывается, машина сборки все еще работает с .net 4 beta 2 вместо rc (с которым были созданы библиотеки DLL). Я собираюсь попробовать обновиться и посмотреть, исправит ли это это.   -  person devlife    schedule 24.03.2010
comment
Я потратил на это кучу времени сегодня, и есть несколько вещей, которые должны произойти. Во-первых, вы должны передать / p: FxCopDir = путь к каталогу FxCop. Этот каталог содержит все файлы FxCop, включая exe и необходимые библиотеки DLL, используемые во время анализа кода. Когда VS установлен, все работает нормально, так как установка создает записи в реестре. Чтобы обойти это, вам нужно изменить C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10 \ CodeAnalysis \ Microsoft.CodeAnalysis.Targets и удалить зависимости в реестре.   -  person devlife    schedule 26.03.2010


Ответы (1)


У вас будут тяжелые времена, чтобы это настроить ...

Я бы установил VS2010 на сервере сборки. Проблема решена.

Примечание.
Сервер сборки должен быть копией вашей среды разработчика (а не производственной среды).

person Peter Gfader    schedule 24.08.2010
comment
Вы первый, кого я слышал, чтобы сказать это, Питер. Как вы думаете, почему среда сборки должна воспроизводить сервер разработки, а не среду prod? - person devlife; 24.08.2010
comment
Сервер сборки используется для компиляции вашего исходного кода (текстовых файлов) в исполняемые файлы, а затем запускает тесты для них. Это то, что делает и машина разработчика. Производственная среда (сервер) просто запускает финальное приложение без компиляции, тестирования, анализа кода и т. Д. Как вы думаете? - person Peter Gfader; 25.08.2010