什么是与Microsoft Visual Studio一起使用的最慢的病毒扫描程序
由于我的病毒检查程序,我刚刚让微软Visual Studio"慢慢"对我进行了攻击......(100多个项目,其中一些项目中包含超过100个C#文件,因此任何减慢构建的事情都很糟糕.)
我们都知道开发工具会进行大量的文件访问,因此Virus Scanner会产生很大的影响.由于原因很多,我们大多数人都必须运行病毒扫描程序.
那么有人测量过不同病毒扫描程序(和设置)对Microsoft Visual Studio速度的影响吗?
有没有人将Microsoft Security Essentials与Visual Studio 捆绑在一起?
另请参阅(如果您有代表,请扩展列表)
人们对Visual Studio 2010和病毒检查程序的体验是什么?
我将此作为来自某人的有用电子邮件的一部分(将重命名无名)在Microsoft代表他自己发言.
目前尚不清楚我们(微软)是否能够支持第三方产品.考虑到这一点,我注意到在Ian链接到(这个问题)的帖子中,Computer Associates被某人列为开发环境中性能最佳的病毒检查程序之一,有趣的是,我相信许多Microsoft开发人员的产品在他们的桌面上使用.
自从提出这个问题以来,我对Microsoft Security Essentials的问题最少,但我没有任何事实或措施来支持这一点.
我们的产品解决方案拥有100多个项目(500 + ksloc的生产代码).其中大多数是C#项目,但我们也很少使用C++/CLI来桥接与本机代码的通信.
重建整个解决方案需要几分钟时间.没关系.如果我想重建解决方案,我希望它真的需要一些时间.什么不好是完全重建后构建解决方案所需的时间.想象一下,我使用了完全重建,现在没有对解决方案进行任何更改,我按下Build(F6或Ctrl + Shift + B).如果没有变化,为什么需要35秒?在输出中我看到它开始"构建"每个项目 - 它不执行真正的构建,但它做了一些消耗大量时间的东西.
35秒的延迟是痛苦的屁股.是的我可以通过不使用构建解决方案来改善时间,但只能构建项目(Shift + F6).如果我在特定的测试项目上运行构建项目,我正在进行它将只需"8".它要求我在正确的项目上运行项目构建(测试项目以确保构建依赖测试的代码).至少ReSharper测试运行器正确识别只有这个单个项目必须构建并且重新运行测试通常只包含8 + s编译.我目前的编码Kata是:不要触摸Ctrl + Shift + B.
即使我没有做任何更改,测试项目构建也需要8秒.它需要8s的原因是因为它还"构建"依赖关系=在我的情况下它"构建"超过20个项目,但我只对单元测试或单个依赖进行了更改!我不希望它触及其他项目.
有没有办法简单地告诉VS只构建进行了一些更改的项目和依赖于已更改项目的项目(最好是这部分作为另一个构建选项)?我担心你会告诉我这正是VS正在做的事情,但是以MS的方式......
我想提高我的TDD经验并减少编译时间(在TDD中,编译可以每分钟发生两次).
为了让这更令人沮丧,我正在一个团队工作,大多数开发人员在加入这个项目之前曾经在这个团队工作过.所以你可以想象当他们必须使用VS而不是Java中的完全增量编译时他们会生气.我不需要增量编译类.我期待逐步编译解决方案.特别是在像VS 2010 Ultimate这样的产品中花费数千美元.
我真的不想得到如下答案:
我可以在这里阅读这些答案.那些是不可接受的解决方案 我们不会为VS做出这样的妥协付出代价.
我们有一个中等规模的解决方案,约有20个项目.在其中一个我有我的业务实体.在编译任何项目时,visual studio会在此BusinessEntities项目上等待并挂起大约一分半钟.
我在SharpDevelop中尝试了我们的解决方案,它在18秒内编译了我们的完整解决方案.与MSBuild类似的时机.
我的猜测是VS试图找出项目是否需要编译,但这个过程比实际执行编译慢了大约15倍!
我无法切换到伟大的尖锐开发,它缺乏一些小的,但我们的调试方案的基本要求.
我是否可以阻止VS检查这个项目,并让它在没有这样的检查的情况下编译项目,就像sharpdevelop一样?
我已经知道在配置管理中取消选中项目以防止构建一些项目,但是我的开发人员会忘记他们需要在更新到最新源之后编译这个项目,并且他们面临的问题对他们来说似乎很奇怪.
编辑:有趣的调查结果:延迟发生在其中一个项目中.在配置管理器中,我取消选中所有项目,然后单独编译它们.所有项目都在几秒钟内编译完成!! 关键在于:如果直接构建该特殊项目,则在几秒钟内编译,如果正在构建(或跳过,因为它是最新的),因为构建依赖于它的另一个项目,VS挂起约一分半钟,然后决定编译它(或跳过它).我的结论是:Visual Studio正在检查是否有任何文件被更改,但由于某些原因,对于这个特殊项目来说效率极低!
我有一个Visual Studio 2008解决方案,其中包含> 40 C#和C++/CLI项目,这些项目相互依赖.使用该解决方案非常缓慢,通常我一次只需要几个项目.所以我决定将解决方案分成多个包含3-5个项目的解决方案.我还希望保留所有项目的"完整"解决方案(它对于自动构建或影响所有项目的大型重构操作非常方便).(这是这里的主要条件.否则,将项目拆分成解决方案当然是微不足道的.)
有没有办法做到这一点?
我的第一个想法是创建新的空解决方案,并将一些现有的项目文件添加到每个解决方案中.但是,如果我这样做,VS再也找不到项目引用(因为它们不在同一个解决方案中).我可以将引用添加为"普通"文件引用.但是,如果我这样做,我的"完整"解决方案将不再起作用,因为依赖关系将丢失.
编辑:
谢谢大家的答案.我想澄清一下我的问题:我的解决方案包含44个项目,不包括测试.因此,将它分成两部分并不是我想到的,我更多地考虑5-8个部分.这就是为什么我想保持"完整"的解决方案,VS可以找出完整版本的正确构建顺序.手动维护8个独立解决方案的构建顺序(例如在批处理文件中)似乎容易出错.
此外,我想"按逻辑"对项目进行分组(即我希望将项目通常在一个解决方案中一起修改).但是这种分组并不总是与依赖性相匹配.例如,假设我有依赖链
A is referenced by B is referenced by C is referenced by D
Run Code Online (Sandbox Code Playgroud)
并且假设A和D经常被一起修改,但B和C很少改变.(显然,B使用的A接口必须保持不变.)然后我想在一个解决方案中使用A和D,在另一个解决方案中使用B和C. 但是,只有当我想从头开始构建所有项目时,我才能拥有包含A,B,C和D的完整"完整"解决方案.一旦构建完成,我就可以打开我的A/D解决方案并仅编辑/构建这两个项目.
但我担心我的问题没有优雅的解决方案.(双关语不打算)
我的VS.NET 2008解决方案需要更长的时间来编译(ASP.NET 3.5 + ASP.NET MVC 2 + C#),我想知道是否有办法知道哪个项目需要更长的编译时间以及为什么?我禁用了一些项目的编译,这有助于减少构建时间,但我希望它更快.
Visual Studio 2005非常慢,有21个项目的解决方案.任何想法如何加快它?
我正在研究目前有60个组件的大型解决方案.有许多程序集定义了解决方案的公共部分,然后是系统的一些入口点程序集.
TDD实际上是不可能的,因为最低域层中的单线变化迫使几乎整个解决方案的重建,因为测试组件引用了解决方案的各个层.
什么是最佳实践,将构建时间从当前的75秒降低到更可接受的5秒左右?这将使TDD再次可行.
在进行单元测试时,某些类需要由其他程序集的接口定义的模拟,因此必须在测试程序集中引用.因此,除了解决方案的最低级别之外,并不总是可以单独引用其他程序集.
按理说,Visual Studio(.NET编译和IDE)在5000美元的服务器上比在500美元的桌面上运行得更好.
有没有人有经验在这个价格范围内的服务器上托管的虚拟机中运行Visual Studio,并通过RDP访问?(假设现有硬件可用于所述价格.)
显然,该服务器上还有其他虚拟机,但不是每个人都会进行密集型任务,例如同时编译等.作为一个起点,您可以假设4GB内存和4个虚拟CPU分配给VM,但随时提供其他配置建议.
任何见解?它是如何运作的?我正在寻找实用的方法来最大化编译/运行周期和一般IDE性能的速度.
(我对这是否属于堆栈溢出或服务器故障感到困惑.由于它与Visual Studio有关,并且可能对尝试改善开发体验的程序员有一般兴趣,我决定在此发布.请如果不行,请移动它.)
也许这只是一个疯子的梦想,但..
在我的公司,我们有一个很大的C#.NET项目,有大约25个解决方案(非常老)和~3.5 mio.同上.我面临的问题是:构建时间太慢,现在使用SSD(开发机器)需要7分钟,使用普通硬盘驱动器需要15分钟+(我希望部署的是TeamCity构建系统).我知道,构建系统应该是最快的,但这在短期内我无法改变.
我想简化devs的commit-build-unittest反馈循环(最好是现在在Teamcity机器上),只需编译上次提交触及的项目,从本地nuget服务器获取所有其他程序集(teamcity服务器本身版本为7.0).
现在,对于小型提交,这将极大地减少反馈循环(15分钟到不到一分钟,给定真实的单元测试).
我知道这种部分编译的问题是跳过编译错误的可能性(不匹配的接口可能会被忽视),但是这可以通过运行第二个(Teamcity?)构建服务器实例来缓解,该实例同时运行整个enchilada.但立即获得第一反馈对我来说非常重要.
现在我的问题是:有没有可以处理这项任务的构建系统/连续集成系统?或者我是否必须编写自己的提交感知后台服务?这会有点讨厌,因为我们使用FinalBuilder Scripts,并且Format似乎没有任何API可读(但没有深入挖掘).
PS:另外,我想只为最后一次提交改变的项目运行单元测试,或者至少对它们进行优先级排序.但那是事后的想法.
似乎git和mercurial都是面向Linux的.哪个在Windows上比较成熟?