【发布时间】:2009-05-07 09:06:01
【问题描述】:
对于小型项目,我几乎可以立即切换到设计视图(
我有一个大型项目,需要大约 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)很大( > 1GB) 并且这里的大多数文件夹都有我的托管 C++ dll 的副本!每次重新打开设计视图(重新编译后)时,这些文件夹似乎都会重新创建。这可能与放缓有关吗?
更多信息:
用户控件或表单中的工具条使表单需要 60 秒才能加载。移除工具条(但表单上仍有其他几个不同的控件)可以立即切换到设计视图。
不过,这还不是全部……全新项目中的工具条不会导致大幅减速 - 所以在我的大项目中一定有什么东西影响了工具条。此外,某些其他没有工具条的窗体/控件仍然需要 60 秒才能显示设计视图,因此无论是什么影响工具条的东西也会影响其他控件。我将继续努力准确地确定哪些控件,甚至可能是导致它的原因!
【问题讨论】:
-
只是为了清楚起见 - 导致减速的大型项目在 C# 中,对吗?
-
该项目是用 C# 编写的...它还引用了托管 C++ 项目,但我没有时间尝试隔离托管 C++ 项目以查看是否有所不同...
标签: c# visual-studio winforms