对于小型项目,我几乎可以立即切换到设计视图(<1秒)。
我有一个大型项目,在设计视图中打开控件或表单大约需要60秒 - 这是第一次。在这60秒的延迟之后,我几乎可以立即在设计视图中打开项目中的任何控件 - 直到我重新编译项目。
如果这个项目构建的exe在另一个(小)项目中引用,那么小项目会立即变得像大项目一样迟缓。同样,如果我将大项目中的所有文件单独添加到小项目中,那么小项目就会变得迟钝。
大型项目引用了一个大型的托管C ++项目,但如果我向小项目添加相同的引用(并从引用中调用函数以确保它被加载),那么小项目仍然很快。
我的大型项目使用SandDock。如果我的小项目使用SandDock,它仍然很快。
我的大项目有大约60个用户控件出现在工具箱中。如果我向小项目添加60个用户控件,那么小项目仍然很快。
如果我使用[System.ComponentModel.ToolboxItem(false)]使工具箱中的用户控件隐藏,则大项目仍然很慢。
vs2005和vs2008都会出现问题。
第一次打开设计视图时,大型项目的速度如此之慢?其他一些参考?大量的控制?大量的课程?其他一些原因?
我注意到的一件事(虽然可能是红鲱鱼)是ProjectAssemblies文件夹(C:\ Documents and Settings \ tim.gradwell \ Local Settings \ Application Data \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies)很大( &gt; 1GB)这里的大多数文件夹都有我的托管C ++ DLL的副本!每次重新打开设计视图时(重新编译之后),都会重新创建这些文件夹。这可能与减速有关吗?
进一步信息:
用户控件或表单中的工具条使表单加载需要60秒。删除工具条(但在表单上仍然有其他几个不同的控件)使得切换到设计视图即时。
虽然这不是全部故事......一个全新项目中的工具条不会导致大幅减速 - 所以我的大项目中必定会有一些影响工具条的东西。此外,某些其他没有工具条的其他表单/控件仍然需要60秒来显示设计视图,因此影响工具条的任何内容也会影响其他控件。我将继续努力确切地确定哪些控件,甚至可能是它导致它的原因!
答案 0 :(得分:9)
即使您已将类标记为未显示在工具箱中,Visual Studio仍需要扫描所有打开的项目以发现它。为了加快速度,您需要关闭设置以自动填充工具箱。如果你对工具箱做了很多工作,它会有点烦人,但它会加速很多事情。
设置在工具中 - &gt;选项 - &gt; Windows窗体设计器,将“AutoToolboxPopulate”设置为false。
答案 1 :(得分:3)
第一个答案:“设置位于工具 - &gt;选项 - &gt; Windows窗体设计器中,将”AutoToolboxPopulate“设置为”为我工作“。设计师在第一次在设计视图中查看表单时尝试将注意力集中在表单上的控件上时,过去常常会挂起至少一分钟。现在,只需几秒钟。 (我没有足够的声誉点来直接评论这个答案)
答案 2 :(得分:0)
同样类似的事情发生在我的2005年,因为devenv.exe随机挂起
甚至在“构建”之后,有时自定义控件会破坏主窗体
你最近有病毒扫描和碎片整理吗?
答案 3 :(得分:0)
我在Visual Studio 2005中的Win CE 6.0项目中遇到此问题。该项目使用System.Data.SQLite.dll v1.0.65.0。每次我打开或重新编译项目,然后尝试打开带有网格设计的表单时,至少会有12分钟的延迟。原来它在“我的文档\本地设置\应用程序数据\ Microsoft \ Visual Studio \ 8.0 \项目组件”下生成了770多个文件夹,其中大部分都只有SQLite dll的副本。
问题似乎是我在项目中将这个DLL从“兄弟”文件夹引用到我的项目中。举个例子:
项目文件夹:“... Projects \ ThisAndThat \ projectFolder”
DLL文件夹:“... Projects \ ThisAndThat \ projectFolderBin”
可能有其他文件夹关系表明这个问题,但我没有调查
我将DLL移动到“Program Files \ Microsoft.NET \ SDK \ CompactFramework \ v2.0 \ WindowsCE”文件夹中,问题就消失了。我有一个带有标签控件的表单,其中包含两个标签。每个选项卡都包含一个数据网格控件。这种形式现在几乎立即加载到设计师中
如果有人知道更好的解决方案,或VS2005的设置或行为导致此问题,请添加评论。