启动Visual Studio 2015时还会同时启动两个其他可执行文件:
VsHub.exe
和
Microsoft.VsHub.Server.HttpHost.exe
这两者占用了任务管理器中相当大的空间。
我该如何删除"Visual Studio Hub"选项? 我不使用任何Visual Studio的'顶级'功能,包括Visual Studio Hub。
启动Visual Studio 2015时还会同时启动两个其他可执行文件:
VsHub.exe
和
Microsoft.VsHub.Server.HttpHost.exe
这两者占用了任务管理器中相当大的空间。
我该如何删除"Visual Studio Hub"选项? 我不使用任何Visual Studio的'顶级'功能,包括Visual Studio Hub。
我想解释一下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收集的遥测类型以及它们的使用情况。
没有人提到的事情...
根据我的防火墙日志,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
我使用的是Windows 7 x64和Visual Studio Express 2015,我用任务管理器终止了烦人的进程。然后我删除了C:\Program Files (x86)\Common Files\microsoft shared\VsHub文件夹。这个操作解决了问题,但需要管理员权限。
如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 添加回文件即可。
这是为了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及其相关进程通常使用:
这样做可以释放超过1 GB的内存,几乎不会损失任何功能。
“VsHub” 应该被重命名为 “SmartMobileCloud”,因为它太时髦愚蠢了。我已经将其卸载,我的 VisualC 编辑/调试没有受到影响。
在安装 VisualStudio 后,删除未使用的扩展,进行“C:\Program Files (x86)\Common Files\Microsoft Shared\ - Deleted - VsHub”修复…并在那里放置一个“VsHub”文本文件(不要加“.TXT”),这样就不会重新创建该文件夹了。
"