如何在系统托盘中禁用 VsHub.exe?

139

启动Visual Studio 2015时还会同时启动两个其他可执行文件:

VsHub.exe

Microsoft.VsHub.Server.HttpHost.exe

这两者占用了任务管理器中相当大的空间。

我该如何删除"Visual Studio Hub"选项? 我不使用任何Visual Studio的'顶级'功能,包括Visual Studio Hub。


15
我实际上只使用Visual Studio进行代码编辑,而非其他用途。我使用Unity,编译是由内置编译器完成的,所以我只想在VS中看到一个花哨的文本编辑器。此外,我不想使用VS Code,因为它缺乏Unity的自动补全功能,也无法制作自定义主题。 - Reda Lahdili
2
@RedaLahdili 你最终做了什么?即使我没有运行VS2015,这两个文件仍在运行。 - prettyvoid
2
你的情况似乎比我更糟糕!不幸的是,我没有找到任何解决方案。他们真的需要采取一些行动来解决这个问题。有时 VSHub 占用的内存比 VS 本身还要多。唉……如果你们找到了任何解决方案,请及时更新我们。 - Reda Lahdili
1
另一种解决方案是:https://dev59.com/plwZ5IYBdhLWcg3wDMm9 - oguzh4n
1
“Microsoft.VsHub.Server.HttpHostx64.exe”存在内存泄漏问题,这导致我的Windows 10系统关闭。请查看链接:https://connect.microsoft.com/VisualStudio/feedback/details/1610160/microsoft-vshub-server-httphostx64-exe - Olivier Jacot-Descombes
显示剩余7条评论
10个回答

131

我想解释一下VS Hub的作用和意图。我在微软工作。

正如sraboy所提到的,VS Hub是一个独立的服务主机,Visual Studio(以及其他基于VS shell的产品,例如Blend)使用它来支持多工具通信,在devenv(VS)内实现更好的响应,并使某些服务能够超出生成进程的生命周期。目前托管在VS Hub中的服务集包括其他答案中提到的许多项目,例如漫游设置、处理大量ETL数据并在诊断工具中呈现、某些遥测报告以及扩展自动更新和通知。虽然当前托管的服务集可能会在将来增长,因此即使现在没有任何这些服务似乎是必要的,也将来会有其他服务在那里托管(也就是说,通过重命名推荐来禁用vshub.exe是一个非常大的锤子 :-).

就生命周期而言,vshub和主机进程(即Microsoft.VsHub.Server.HttpHost(64).exe)可以在devenv.exe关闭后继续运行。但是,它们不应该无限期地保持运行状态。在大多数情况下,这些进程将在最后一个基于VS的shell实例关闭后的约5分钟内终止。因此,如果您正在运行VS实例(devenv.exe)和Blend实例(blend.exe),并关闭了devenv.exe,则vshub和相关的主机进程将继续运行。如果您然后关闭blend.exe,则vshub和相关的主机进程仍将运行。但是,在那之后约5分钟,这些附加进程将关闭。如果在该5分钟窗口内启动另一个devenv.exe实例,则vshub和相关的主机进程将不会终止,并将继续运行(基本上主机进程在5分钟内不接收任何请求时终止,当所有主机进程终止后,vshub.exe进程本身终止)。

就资源而言,vshub.exe进程本身应始终相对轻巧。如果它变得很大,那么这是一个错误,我很想知道它的情况,以便我们可以修复它 :-) 另一方面,主机进程可能会因托管的服务而变得非常大。特别是,诊断工具通过处理ETL文件而工作。ETL文件可能非常非常大,因此主机可能会使用许多资源。诊断团队正在寻找减少资源消耗的方法,但目前,当您不需要它时关闭诊断工具窗口应该有助于缓解问题。

就在线连接而言,当前托管服务集合中有三个主要来源(请注意,这将随时间而改变)。首先,正如user3345048所提到的,检测和自动更新扩展名的服务在该进程中运行。控制该通信的选项在“工具|选项|环境|扩展和更新”中(请参阅前两个复选框)。其次,漫游设置在VS Hub中作为服务运行。控制此行为的设置位于“工具|选项|环境|同步设置”中(或者更全面地说,如果您没有登录VS右上角的个性化帐户)。最后,VS Hub确实报告遥测数据。可以通过“帮助|客户反馈选项|设置…”菜单项显著减少此数据的量。您也可以在该位置阅读Microsoft收集的遥测类型以及它们的使用情况。


40
安森 - 我在Windows 7上使用带有RTM版本1的Visual Studio 2015。 如果我打开Fiddler4,我会看到每秒钟有数百个或更多的调用localhost/vshub/sameGuidHereOverAndOver。这完全是不可接受的 - 我不知道vshost.exe在想什么,但它完全失控了。我可以杀死该进程,但问题仍然存在。可能需要回到2013年的版本... - Mario
4
@Mario - 如你所见,vshub经常充当本地http服务器,因此在运行时预计会看到一些流量(http作为IPC)。任何持续一段时间的每秒数百个请求肯定是一个错误。您可以检查%temp%\VsHub中的日志,这应该表明是否有任何异常被抛出,显然您已经找出如何检查流量。最好的做法是通过connect.microsoft.com报告此问题,因为这将为我们提供一个收集日志等信息并尝试确保其得到修复的渠道。 - Anson Horton
28
这是我机器上的Microsoft.VsHub.Server.HttpHost64.exe运行得非常“轻巧” - http://imgur.com/DKvSNqf - 它的峰值内存占用达到1GB。不错。 - sh1rts
7
我理解你的不满。我上面提到的"lithe"评论是针对vshub.exe做出的。Microsoft.VsHub.Server.HttpHost64.exe是运行各种服务的主机进程,其中一些服务可能非常占用内存(例如在使用F5时启动的诊断工具,或者显式选择进行内存或UI响应性分析时)。您可以尝试我上面提到的一些切换来禁用其中的一些服务,以查看是否有所帮助,但通常我们将努力减少未来版本中的总体内存开销。 - Anson Horton
17
那么如何停止在Fiddler中看到数百个/vshub/GUID请求呢?这使得在Visual Studio中调试任何HTTP客户端变得不可能,因为每一步调试时,我都会在fiddler中看到10多个请求,而我感兴趣的请求就会丢失 :-(。此外,在本地主机上进行HTTP请求是一种非常低效的进程间通信方式。 - Đonny
显示剩余29条评论

81

没有人提到的事情...

根据我的防火墙日志,VsHub.exe、Microsoft.VsHub.Server.HttpHost.exe和Microsoft.VsHub.Server.HttpHostx64.exe都试图进行在线通信。

我看到的外向连接尝试的地址包括191.236.194.164(位于堪萨斯州威奇托的 Microsoft Azure)和 23.102.160.172(位于华盛顿州雷德蒙德的 Microsoft Azure)。

我知道“现代”软件应该与云集成,但是......

作为一个不需要从 Microsoft Azure 服务器获取任何内容,并且真正关心隐私和不向外界泄露我正在处理的任何部分的人,我非常希望 A) 有一种方法可以选择不运行这些程序,或者 B) 提供设置以限制它们在网上的聊天量。是的,防火墙会阻止这些连接,但这是最后的手段。

只要一个简单的复选框,“[ ] 联系 Microsoft Azure 服务器”就好了。无论这意味着不运行相关程序还是只是让它们不进行在线连接都对我来说无关紧要。我想从资源的角度来看,前者会更好,因为它会使用较少的资源。

通常情况下,我不会建议更改已安装应用程序套件中的文件,但由于我有一个虚拟机环境,可以在其中测试对 Visual Studio 2015 的更改而没有太多影响(快照很棒),因此我尝试更改了这三个文件的权限(去除继承,然后禁止用户读取和执行)。

结果,没有 VsHub 应用程序运行,并尝试联系远程系统。

Visual Studio 直接运行。我看不到任何缺点。

-Noel


缺点:您自己不能再修改这些文件了。 - harrymc
不确定你的意思,harrymc。你能具体一点吗?你是指访问权限的问题吗?作为管理员,你仍然可以掌控计算机上的每个文件,尽管微软有时会设置障碍。但如果你了解权限的工作原理,你可以做任何想做的事情。毕竟,这些文件在你的电脑上。如果你的意思是你已经删除了自己的权限,那么我的措辞有误。我是说我删除了权限,而不是添加了拒绝设置。我应该使用“禁止”这个词。 - NoelC
一旦设置了拒绝权限,要重新访问权限,必须首先将自己设置为文件的所有者。 - harrymc
正确。不要在“拒绝”列中勾选框。相反,在“允许”列下取消“读取和执行”的勾选。 - NoelC
2
根据我的第三次更新后的经验,仅仅改变vshub.exe的权限以移除执行访问似乎已经足够了。 - NoelC

62

我使用的是Windows 7 x64和Visual Studio Express 2015,我用任务管理器终止了烦人的进程。然后我删除了C:\Program Files (x86)\Common Files\microsoft shared\VsHub文件夹。这个操作解决了问题,但需要管理员权限。


38
我会尽力为您翻译:我点赞是因为DevTools团队真的需要停止在后台一直运行这些令人讨厌的垃圾程序。同时,我会遵循建议删除VsHub文件夹,因为微软不提供干净的卸载方法。 - jerhewet
18
我找到了一个更可靠的解决方案。将 VsHub 文件夹重命名为 _VsHub,而不是删除它。这样做的好处是,如果你真的很害怕,可以回滚操作 :) - xakepp35
2
注意,删除/重命名文件夹将导致任何依赖工具失败。其中一个例子是在调试时运行的诊断工具。 - BStruthers
4
调试期间,显示进程CPU和内存使用情况的诊断工具无法正常工作。 - Frederik
4
我在尝试修改旧项目中的linq to sql设计文件时,遇到了VsHub和HttpHostx64的问题。 打开设计器后,VS会锁定并无响应。 Procmon显示HttpHostx64.exe有很多活动。 我已将c:\Program Files(x86)\Common Files\Microsoft Shared\VsHub\文件夹重命名为“VsHub(bullshit)”。 我的linq-to-sql设计器现在正常加载。 :) - Nick
显示剩余6条评论

30

如xakepp35所提到的,您可以删除 C:\Program Files (x86)\Common Files\microsoft shared\VsHub 文件夹。但是,我怀疑更新或其他安装程序可能会尝试重新创建它。

我所做的是关闭所有VS进程。作为管理员,拥有该文件夹,并将其压缩成RAR(ZIP)文件,最后将其删除(RAR作为备份,如果需要恢复文件)。我的SSD需要节省空间。否则,您可以仅将其重命名并保留在原处。

然后为了防止其再次被创建,我使用了一个古老的Win 3.1技巧。在 C:\Program Files (x86)\Common Files\microsoft shared 文件夹中创建一个名为 VsHub.txt 的文本文件。然后重命名该文本文件并移除 .txt 扩展名,留下一个名为 VsHub 的文件。由于操作系统无法在同一位置创建同名的文件夹和文件,所以它既无法作为文件夹对VS不可访问,也无法作为文件夹对任何未来的安装程序/更新器不可访问。然后,如果您需要在将来再次允许访问,只需将 .txt 添加回文件即可。


8
这个提议的解决方案对我来说非常有效。它消除了Fiddler中vshub请求的洪水,VS的整体性能也有了显著的提高。如果微软正在阅读:简约就是美 -- 浮夸的软件是你能让生产力软件发生的最糟糕的事情。 - Shaun
为了确保没有人会有任何关于删除该文件以允许创建目录的疯狂想法,您可以从右键/属性/安全选项卡中向其添加ACL,除了拒绝每个人对该文件的删除权限之外,不做任何其他操作。 - dgnuff
我遵循了这个技巧,获得了惊人的速度提升。我的电脑容易出现磁盘排队问题,有时候意味着 Visual Studio 启动画面要显示 5 分钟(不夸张)。非常感谢您的帮助。 - S Meaden

22
这似乎是Visual Studio的通信瑞士军刀,根据@sraboy的答案。它在调试期间用于显示有关正在运行的进程的性能信息,并向Microsoft发送有关您正在处理的项目的遥测信息。您可以在禁用它的情况下构建和步进代码(乍一看)。
删除、重命名或使用AV阻止vshub进程创建将破坏我提到的性能跟踪。失去vshub可以提高使用Visual Studio时的隐私,因为它与vortex.data.microsoft.com通信,传递诸如解决方案和项目GUID以及您的帐户ID之类的信息。下面是从Fiddler拦截HTTPS数据的屏幕截图。
在网络级别阻止访问有助于保护隐私,但它不会解决资源使用问题。我认为后者是运行Visual Studio的正常开销。
对于您的用例,您可能可以通过某种形式的禁用(使用防病毒软件阻止实例化可能是最干净的方法),但它可能支持我尚未发现的其他功能。

Data communicated to Microsoft, via vshub


8

如果您想保留VSHub并仍然能够使用Fiddler,则可以在Fiddler中设置以下过滤器:

Request Headers > Hide if URL contains =
REGEX:localhost:\d+\/vshub\/

编辑 - 你可能也想添加这个:

Hosts > Show only the following Hosts: =
localhost;

为了省略vortex.data.microsoft.com等请求,可以使用以下方法:vshub filter in Fiddler

4
根据微软程序经理在Visual Studio博客上的评论commenting on the Visual Studio Blog,它用于支持VS套件中的多工具通信。考虑到Visual Studio的复杂性,我不建议像xakepp35的回答那样采取过激措施(将其删除)。
在我的Win10 x64和VS2015上运行时,调试时有三个进程,总RAM使用量不到150MB。除非您在内存较小的机器上进行页面交换,否则不必太担心。考虑到您正在运行VS2015,我猜您有150MB可用。
除非您找到明确显示Hub支持的文档,否则建议不要对其进行更改。根据我的经验,Visual Studio安装很容易出问题。

3
在我使用一整天后,这个程序占用了580MB的内存。即使我关闭了VS2015,这个程序仍在运行。我认为对于一个我不使用其云功能和更新功能的程序来说,这已经是相当多的RAM了。 - 0xBADF00D
这似乎也取决于你解决方案的大小。 - Ed DeGagne
1
问题在于它会无限制地增长。我昨天才安装了2015版,今天早上就出现了一个7GB的谜团需要调查。太傻了。已禁用诊断工具。 - Nick Westgate

3
Visual Studio 试图连接在线的原因之一似乎是默认情况下搜索 Visual Studio 及其扩展的更新。此外,Visual Studio 在其核心中包括 Internet Explorer 的版本,以便可以实时下载网页(和扩展)。换句话说,它也充当浏览器,正如我们所知道的,微软非常关注其用户的数据和软件使用情况。在菜单“工具”→“选项”中有大量在线功能。(老实说,我更喜欢 MonoDevelop,即使它有缺陷。)

2
我最近换成了Sublime Text,因为无法忍受VS让我的电脑变慢。 - Reda Lahdili
1
我们即将把所有基于.NET的Web服务转换成Java,因为微软的工具实在太糟糕了。 - crush

2

这是为了BrowserLink、诊断窗口和Intellitrace所需要的。

我有时需要这些功能,但只有8GB的内存。通常情况下我使用率在90-95%,因此我创建了一个批处理文件来通过重命名文件夹并创建指向带有虚拟文件的空文件夹的符号链接来切换VSHub开关。

运行前请关闭Visual Studio。

@echo off
goto CheckVsHubRunning

:KillVsHub
    echo Killing VsHub Process
    taskkill /IM VsHub.exe /T /F
    TIMEOUT /T 3 /NOBREAK
:CheckVsHubRunning
    ver > nul
    tasklist /FI "IMAGENAME eq VsHub.exe" | find /I /N "VsHub.exe"
    if "%ERRORLEVEL%"=="0" goto KillVsHub
    if "%ERRORLEVEL%"=="1" echo VsHub is not running.
    echo.

PUSHD "C:\Program Files (x86)\Common Files\microsoft shared"
    IF NOT EXIST "VsHub.original" (
        echo Renaming Original VsHub folder.
        RENAME "VsHub" "VsHub.original"
    )
    IF NOT EXIST "VsHub.dummy" (
        echo Creating Dummy Folder and Contents
        mkdir       "VsHub.dummy"
        copy NUL >  "VsHub.dummy\1.0.0.0"
        copy NUL >  "VsHub.dummy\ServiceModules"
        mkdir       "VsHub.dummy\dummy"
    )

    IF EXIST "VsHub\dummy" (
        echo ENABLING VsHub
        echo.
        rmdir       VsHub
        mklink /d   VsHub   VsHub.original

    ) ELSE (
        echo DISABLING VsHub
        echo.
        rmdir       VsHub
        mklink /d   VsHub   VsHub.dummy
    )
echo.
pause

在我的电脑上,VSHub及其相关进程通常使用:

  • VsHub.exe:最初50 MB。2小时后增加至250-350 MB。
  • Microsoft.VsHub.Server.HttpHost.exe:最初200 MB。1小时后增加至350+MB。
  • Microsoft.VsHub.Server.HttpHostx64.exe:最初320 MB。1小时后增加至550+MB。

这样做可以释放超过1 GB的内存,几乎不会损失任何功能。


0
"

“VsHub” 应该被重命名为 “SmartMobileCloud”,因为它太时髦愚蠢了。我已经将其卸载,我的 VisualC 编辑/调试没有受到影响。

在安装 VisualStudio 后,删除未使用的扩展,进行“C:\Program Files (x86)\Common Files\Microsoft Shared\ - Deleted - VsHub”修复…并在那里放置一个“VsHub”文本文件(不要加“.TXT”),这样就不会重新创建该文件夹了。

"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接