Очень долгая компиляция проекта .NET Framework под Windows CE. Как решить?
На работе у нас коллегами долго компилировался проект под Windows CE, использующий Net Framework. Мой коллега Cryptochild накатал решение этой проблемы. Читайте, может кому пригодится.
Если ваш несложный, казалось бы, проект, который вы пишете в MS Visual Studio 2005/2008 под ОС Windows CE собирается очень долго (у меня время сборки было примерно минут 5), то вы пришли по адресу. У меня была такая проблема, но всемогущий гугель меня выручил.
Диагностика
Выбираем
Tools — Options — Projects and Solutions — Build and Run
В списке MSBuild project buld output verbosity выберем Diagnostic. Теперь открываем окно output
View — Output
и собираем проект и после долгого ожидания в самом конце огромного лога, который выдал компилятор, видим следующее:
Task Performance Summary:
0 ms Message 3 calls
0 ms WriteLinesToFile 2 calls
0 ms RemoveDuplicates 3 calls
0 ms FindAppConfigFile 1 calls
0 ms ConvertToAbsolutePath 1 calls
0 ms ReadLinesFromFile 2 calls
0 ms AssignTargetPath 5 calls
0 ms Delete 2 calls
0 ms MakeDir 2 calls
0 ms CreateProperty 1 calls
0 ms GetFrameworkPath 1 calls
10 ms ResolveAssemblyReference 1 calls
10 ms GetDeviceFrameworkPath 1 calls
20 ms AssignCulture 1 calls
30 ms Copy 6 calls
40 ms FindUnderPath 7 calls
60 ms ResolveComReference 1 calls
290 ms CreateCSharpManifestResourceName 1 calls
761 ms GenerateResource 1 calls
2804 ms Csc 1 calls
118073 ms PlatformVerificationTask 1 calls
Оказывается, что Platform Verification Task — это специальная процедура, которая проверяет, сможет ли программа, которая только что скомпилировалась, запуститься на всех платформах, на которых есть .NETFramework. В реализации под одну платформу может отсутствовать что-нибудь, что присутствует в реализации под другую.
Решено, отключаем!
- Открываем файл
%windir%\Microsoft.NET\Framework\v2.0.50727\Microsoft.CompactFramework.Common.Targetsдля редактирования.
- Если установлен .NET Framework 3.5, то открываем точно такой же файл
%windir%\Microsoft.NET\Framework\v3.5\Microsoft.CompactFramework.Common.Targets - Находим строку
Name="PlatformVerificationTask">и заменяем её на
Name="PlatformVerificationTask" Condition="'$(SkipPlatformVerification)' != 'true'"> - Теперь заводим новую переменную окружения. Для этого нажимаем волшебное сочетание клавиш
windows+break. Далее
Дополнительно — Переменные среды — Системные переменные — ДобавитьИмя переменной
SkipPlatformVerificationзначение
trueТеперь нужно перезайти в систему, а то без этого переменные окружения не обновляются.
Всё! Теперь должно работать быстро.
Автор: Cryptochild



Комментариев нет.