Если ваш несложный, казалось бы, проект, который вы пишете в MS Visual Studio 2005/2008 под ОС Windows CE собирается очень долго (у меня время сборки было примерно минут 5), то вы пришли по адресу. У меня была такая проблема, но всемогущий гугель меня выручил.
Выбираем
Диагностика
Выбираем
Tools — Options — Projects and Solutions — Build and Run
В списке MSBuild project buld output verbosity
выберем Diagnostic
. Теперь открываем окно outputView — 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 — это специальная процедура, которая проверяет, сможет ли программа, которая только что скомпилировалась, запуститься на всех платформах, на которых есть .NET Framework. В реализации под одну платформу может отсутствовать что-нибудь, что присутствует в реализации под другую. Решено, отключаем!
- Открываем файл
для редактирования.%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
Всё! Теперь должно работать быстро.
UPD:
P.S.
По поводу п.4: Обновляются переменные окружения или не обновляются… Тут тайна, покрытая мраком. В одном случае обновилось, в другом — нет. У нас с пользователем DarkestMaster чуть ссора на этой почве не произошла, но, вроде бы всё хорошо.