Очень долгая компиляция проекта .NET Framework под Windows CE. Как решить?

1 звезда2 звезды3 звезды4 звезды5 звезд (1 голосов, средний: 5 из 5)
Загрузка ... Загрузка ...

На работе у нас коллегами долго компилировался проект под 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. В реализации под одну платформу может отсутствовать что-нибудь, что присутствует в реализации под другую.

Решено, отключаем!

  1. Открываем файл

    %windir%\Microsoft.NET\Framework\v2.0.50727\Microsoft.CompactFramework.Common.Targets

    для редактирования.

  2. Если установлен .NET Framework 3.5, то открываем точно такой же файл

    %windir%\Microsoft.NET\Framework\v3.5\Microsoft.CompactFramework.Common.Targets

  3. Находим строку

    Name="PlatformVerificationTask">

    и заменяем её на

    Name="PlatformVerificationTask" Condition="'$(SkipPlatformVerification)' != 'true'">

  4. Теперь заводим новую переменную окружения. Для этого нажимаем волшебное сочетание клавиш windows+break. Далее

    Дополнительно — Переменные среды — Системные переменные — Добавить

    Имя переменной

    SkipPlatformVerification

    значение

    true

    Теперь нужно перезайти в систему, а то без этого переменные окружения не обновляются.

    Всё! Теперь должно работать быстро.

Автор: Cryptochild

Tags: , ,

RSS feed | Trackback URI

Комментарии »

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

Имя (обязательно)
E-mail (required - never shown publicly)
URI
Subscribe to comments via email
Ваш комментарий (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> in your comment.