我可以通过Extensions and Updates manager in Visual Studio禁用特定扩展的自动扩展更新。但是,当我想在无人值守模式下在我的团队的所有计算机上禁用扩展FOO的自动更新时,我该怎么办?
我想要一个选项来使用AD GPO或修改Windows注册表以使特定的Visual Studio扩展停止接收自动更新。这现在有可能吗?
我今天遇到了类似的问题。我没有完全自动化的解决方案,因为我不需要它,但我认为我收集了足够的信息,所以你将能够正确地准备一个可以做到这一点的小应用程序。
从Visual Studio 2017开始,配置不再存储在中央注册表中,而是存储在位于%LOCALAPPDATA%\Microsoft\VisualStudio\15.0_ <somekind_of_id>\privateregistry.bin
的私有文件中。我不确定如何确定somekind_of_id
(在我的情况下它是3eeca950
,为了简单起见,我在所有路径中保留了这样的值,只需替换为你的)。此文件由Visual Studio锁定,因此必须在尝试修改它之前将其关闭(需要VS几秒钟才能释放锁定)。
可以使用RegLoadAppKeyA
将此文件导入应用程序配置单元。此函数将创建一个HKEY
,可以一起使用RegSetKeyValueA
来修改您需要的值。
你感兴趣的关键是Software\Microsoft\VisualStudio\15.0_3eeca950\ExtensionManager\ExtensionAutoUpdateEnrollment
。在它下面列出了所有安装的扩展,每个扩展都是一个DWORD值,其中0
值表示没有自动更新,1
表示它自动更新。
每个扩展值都以扩展的ID命名,并与当前版本一起命名。例如WixToolset.VisualStudioExtension.Dev15,0.9.21.62588
。
您可以在扩展包的manifest.json
文件中检查此ID(例如,您可以使用7-Zip打开.vsix文件)。如果您没有.vsix文件,可以在%LOCALAPPDATA%\Microsoft\VisualStudio\15.0_3eeca950\Extensions\
下找到扩展数据。
我阻止VS完全检查更新。
对于VS2019:
vsregedit.exe set "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" HKCU ExtensionManager AutomaticallyCheckForUpdates2Override dword 0
对于VS2017:
vsregedit.exe set "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" HKCU ExtensionManager AutomaticallyCheckForUpdates2Override dword 0