Windows Mobile 6.5构建时间(VS2008)

时间:2011-11-16 10:09:38

标签: c# visual-studio visual-studio-2008 msbuild windows-mobile

我有一个小型的Windows移动应用程序,大约有25个表单,可能有50个类别分成3个项目。 当我正在构建项目时,在调试模式下正常的CTRL-SHIFT-B需要 25到40分钟

我尝试了skip platform verification黑客攻击,但似乎没有帮助。

环境是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,4Ghz,4gb内存。
有很多可用的Ram(使用2,2 Gb) 编译期间CPU使用率约为25%。

当我构建时,visual studio及其所有子窗口在95%的时间内都是空白的。

事件查看器不会显示任何特定警告,例如坏硬盘等。

更新1

在进程监视器跟踪中,我可以看到在构建期间devenv.exe中存在常规网络活动。 VSS可能与构建有关吗? (我通过今天在旁路模式下使用的vpn隧道到达vss-repository。)

1 个答案:

答案 0 :(得分:2)

首先是好消息:你可以缩短长时间的构建时间,在这里我们选择“坏消息”,工作:

  1. 尝试使用MSBuild构建它以避免VS2008中断或冻结构建
  2. 试着弄明白,为什么你的构建速度很慢,你可以在构建时观察日志。
  3. 记下特别慢的部分
  4. 尝试通过加速最慢的项目来解决“长时间构建时间问题”。只要你想要更好的性能或者没有更多的项目加速,就这样做。
  5. 构建期间的常见问题:

    1. Com引用如果没有单独构建tehy(TLBIMP.exe),可能会降低构建速度 尝试首先构建互操作库,然后在你想要的时候使用它们
    2. 发布/预建事件可以做一些有用但速度慢的事情......清理它们并尽可能删除它们使用项目的BuildEvents属性中的Run when build updates the project output仅在Build更改二进制文件时调用PostBuild事件。
    3. Soultion文件中的引用停止您的MSBUILD构建,因此您应该明确地将它们修复为项目文件
    4. 在构建解决方案后,每个Project的构建速度比部署要慢,尝试直接部署/一次部署,制作一个“dist.bat”,首先构建然后部署。
    5. 您可以使用 Visual Studio宏启动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
      

      如果您有其他问题或想讨论一点,请与我联系。我很乐意帮助你。
      我也很乐意阅读你的问题解决方案,而且你的构建速度很慢!