Время сборки Windows Mobile 6.5 (VS2008) - PullRequest
5 голосов
/ 16 ноября 2011

У меня есть небольшое приложение для Windows Mobile с примерно 25 формами и, возможно, 50 классами, разделенными на 3 проекта.Когда я собираю проект, требуется от 25 до 40 минут для обычного CTRL-SHIFT-B в режиме отладки.

Я попытался пропустить проверку платформы взломать, но, похоже, это не помогает.

Среда VS 2008
Windows Mobile 6.5.3
Compact Framework 2.0

<ProductVersion>9.0.30729</ProductVersion>
<OSVersion>5.02</OSVersion>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<NativePlatformName>Windows Mobile 6.5.3 Professional DTK</NativePlatformName>

КомпьютерHP EliteBook 8440p с i3 @ 2,4 ГГц, 4 ГБ оперативной памяти.
Доступно много оперативной памяти (используется 2,2 ГБ).
Загрузка ЦП составляет около 25% во время компиляции.

Когда я собираю, Visual Studio и все ее дочерние окна остаются пустыми в течение 95% времени.

Просмотрщик событий не показывает никаких особых предупреждений, таких как плохой жесткий диск или около того.

Обновление 1

В трассировке монитора процесса я вижу, что во время сборки в devenv.exe происходит регулярная сетевая активность.Может ли VSS иметь какое-то отношение к сборке?(Я добираюсь до vss-репозитория через туннель vpn, который у меня был сегодня в режиме обхода.)

1 Ответ

2 голосов
/ 16 ноября 2011

Сначала хорошие новости: вы можете сократить длительное время сборки издесь мы идем с «плохими новостями», работа:

  1. Попробуйте собрать его с MSBuild , чтобы избежать VS2008, чтобы прервать или заморозить сборку
  2. Попробуйте чемВыясните, почему ваша сборка идет медленно, вы можете наблюдать за ходом журнала во время сборки.
  3. Запишите детали, которые особенно медленны
  4. Попробуйте исправить «проблему с длительным временем сборки», увеличив скоростьдо самых медленных проектов в первую очередь.Делайте это до тех пор, пока вы хотите повысить производительность или пока не останется больше проектов для ускорения.

Общие проблемы при сборке:

  1. Ссылки на справки может замедлить сборку, если они не собраны отдельно (TLBIMP.exe)попробуйте сначала создать библиотеки взаимодействия, а затем использовать их, где бы вы ни захотели
  2. События Post / PreBuild могут сделать некоторые полезные, но медленные вещи ... Очистите их и удалите их, где это возможноИспользуйте Run when build updates the project output в свойствах BuildEvents проекта, чтобы вызывать события PostBuild только в том случае, если Build изменяет двоичные файлы.
  3. Ссылки в файле Soultion остановите сборку MSBUILD, поэтому вам следует определенно исправитьони должны находиться в файлах проекта
  4. Попробуйте развернуть сразу / один раз Развертывание после сборки каждого проекта медленнее развертывания после сборки решения, создайте "dist.bat", который запускаетСборка, а затем развертывание.

Вы можете использовать Visual Studio Macro , чтобы запустить MSBUILD для текущего решения:

Public Module Builder

    Sub BuildSolutionDebug()
        SaveAll()
        Run("", "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe", """" & GetSolutionName() & """ /t:ReBuild /p:Configuration=Debug /p:Platform=""Mixed Platforms""")
    End Sub

    Sub Run(ByVal folder As String, ByVal file As String, ByVal arguments As String)
        Dim process As New System.Diagnostics.Process()
        process.Start(System.IO.Path.Combine(folder, file), arguments)
        Try
            process.WaitForExit()
        Catch ex As Exception

        End Try

    End Sub

    Sub SaveAll()
        DTE.ExecuteCommand("File.SaveAll")
    End Sub

    Function GetSolutionName() As String
        Return DTE.Solution.FullName
    End Function

End Module

Пожалуйста, свяжитесь со мной, еслиу вас есть дополнительные вопросы или вы хотите обсудить вопрос.Я был бы рад помочь вам.Я также хотел бы прочитать ваше решение проблемы, и в этот момент ваша сборка была медленной!

...