如何获取特定的Visual Studio版本

时间:2016-08-17 11:35:22

标签: visual-studio

作为我们TFS构建的一部分,我想收集构建环境的版本,以记录它在什么情况下构建。特定的Visual Studio版本可能不会对构建过程产生很大影响,但拥有正确的版本并没有什么坏处。

在about框中,我看到“版本14.0.25425.01更新3”,但devenv.exe上的产品/文件版本是14.0.25420.1。在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ 14.0下的注册表中也没有多大帮助。

C:\ Program Files(x86)上的产品/文件版本\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ msenv.dll版本正确,但这个版本是正确的吗?

我能以某种方式以编程方式获得我期望的14.0.25425.01吗?

2 个答案:

答案 0 :(得分:1)

据我所知,没有官方文件。

从我的个人研究(出于类似目的):

版本号位于“C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ ProductUpdate \ SplashInfo.pkgdef”中。 请注意,如果未安装更新,则文件似乎不存在

(附加信息: 在您第一次启动devenv.exe时,该值似乎被复制到注册表值HKCU \ SOFTWARE \ Microsoft \ VisualStudio \ 14.0_Config \ SplashInfo \ EnvVersion中。约框显示上述注册表值的值。通过删除注册表值,您将在about框中看到“14.0.25420.1 D14REL”,它似乎是devenv.exe的版本。

因为在启动devenv.exe之前注册表值不存在,所以我认为SplashInfo.pkgdef是一个更可靠的选择。)

答案 1 :(得分:0)

以下代码在我的VS 2019中显示了“ 16.0.29306.81 D16.2”:

var shell = (package as System.IServiceProvider).GetService(typeof(Microsoft.VisualStudio.Shell.Interop.SVsShell)) as Microsoft.VisualStudio.Shell.Interop.IVsShell;
object ver = null;
shell.GetProperty((int)Microsoft.VisualStudio.Shell.Interop.__VSSPROPID5.VSSPROPID_ReleaseVersion, out ver);
System.Windows.MessageBox.Show(ver.ToString());