2011-10-06 76 views
3

我的雇主有一个包含14个项目的解决方案,巧合的是,编译整个应用程序需要14秒。这使得很难进行更改和重新编译 - 浪费大量时间。什么是.NET应用程序中的东西我可以寻找使编译更快?或者我可以问,哪种工具最适合排查这类事情。 (要了解与msbuild.exe发生).NET解决方案的哪些部分会导致编译速度变慢?

解决方案详情:

  • 强类型数据集瓦特/报告服务
  • WCF服务
  • 的C#和VB.NET
  • 组合项目
  • 一个web应用程序项目
  • 资源(resx文件)遍布全国
  • 企业库(如果你需要我,我可以得到具体的)
  • 微软的向导导航UIProcess应用程序块
  • 微软AJAX Control Toolkit的
  • PdfSharp

请询问您是否需要更多的细节。

+7

14秒??我的天哪,你会在等待的时候做什么:p – Ray

+0

禁用防病毒? – Ray

+0

嗯,他是MacGyver。他应该能够在14毫秒内编译整个解决方案。 :-P – Konamiman

回答

2

要加快构建,请卸载您未在其中工作的项目。在解决方案资源管理器中,右键单击一个项目并单击“卸载项目”。您可以选择多个项目并一次全部卸载它们。当你构建时,卸载的项目将不会被构建。

如果一个解决方案包含很多项目,那么在任何给定的时间,你几乎肯定只能在其中一些项目上工作。如果你一次都在做这些工作,那么你需要看看你的工作方式。

这与从解决方案中删除项目不同。当您需要更改/重建一个卸载的项目时,可以轻松地重新加载它。

+0

这个方便的扩展 - 解决方案负载管理器 - 帮助您只需加载您需要的项目:http://visualstudiogallery.msdn.microsoft.com/66350dbe-ed01-4120-bea2-5564eff7b0b2 – Ray

+0

卸载项目将其从14秒减少到9秒 – MacGyver

2

引用其他VS项目时,确保将“复制本地”设置为false,除非您因特定原因需要它。

您可以创建特定于您正在处理的项目的另一个解决方案。

虽然不是很长时间!

+0

哪里找到“copy local”? – MacGyver

+0

它位于每个项目或程序集引用的“属性”面板中。 – SHug

3

您是否需要在每次进行更改时重建整个解决方案?重建当前的项目就足够了吗?这可能会加速一些事情。

我工作的解决方案有近300个独立的项目,需要大约2分钟才能完成构建,但是当我在工作时,我只构建我正在进行的项目,节省了大量时间。

2
  • 如果您使用本地文件的源代码控制,例如SVN值得在代码目录中禁用防病毒程序。
  • 设置复制到输出目录不要复制如果,如果你不能做到这一点使用副本新
  • 可能的话移除所有的前/后生成事件
  • 如果你有网站项目开关的WebApplication
  • 对于卸载和加载项目,您可以使用Solution Load Manager
+0

我们的项目没有一个本地数据文件(从我从关于该设置的文章中得到的内容)..对于该复制到输出目录设置..至少我找不到它。你能解释如何得到这个选项吗?我会执行哪些步骤? – MacGyver

2

编译有时是磁盘绑定的,特别是对于.Net应用程序。它会在固态硬盘上运行得更快。如果你想测试这个理论,把你的代码放到RAM disk并编译它。

+0

使用RAM磁盘编译.NET应用程序需要什么步骤? – MacGyver

+0

我正在标记另一个人的答案,直到我可以使这个工作并将编译时间缩短到9秒以下。他从14秒减少到9秒,这比较好。 – MacGyver

+0

步骤#1,安装合适的RAM磁盘。链接的是免费的,效果不错。将您的源代码移动到RAM磁盘。 (它看起来就像计算机上的另一个普通驱动器)一定要使用源代码管理和频繁检入,RAM是易失性的。编译的临时文件被写入obj文件夹,最后的对象被写入bin文件夹。因此,所有重要的读写操作都在应用程序的工作文件夹中(即与sln文件相同的文件夹) – MatthewMartin

相关问题