好吧,我被困住了,我想我需要一些帮助。我有多个版本的Visual Studio Installed。启动应用程序时,我希望它能够找到所有Visual Studio版本并返回它们,以便用户可以选择他们想要使用的版本。在早期版本中,您可以使用路径和注册表项来检查已安装的版本。
现在VS17更轻量级,安装方式不同,因此您无法再使用注册表项。我正在查看https://code.msdn.microsoft.com/windowsdesktop/Visual-Studio-Setup-0cedd331#content和https://github.com/Microsoft/vswhere,但我似乎无法让它们发挥作用。
这个想法是用户会点击内部应用程序中的解决方案文件,我们将启动最新版本的Visual Studio。
以下是当前代码如何查找以前版本的片段:
private class VsVersion
{
public static VsVersion TryResolveInstalledVersion()
{
// Note: Newest version first
// Note: This search will fail on 32-bit systems
var versions = new[] {
new {
ExecutablePath = @"%PROGRAMFILES(x86)%\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe",
RegistrySubKey = @"Software\Microsoft\VisualStudio\14.0"
},
new {
ExecutablePath = @"%PROGRAMFILES(x86)%\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe",
RegistrySubKey = @"Software\Microsoft\VisualStudio\12.0"
},
new {
ExecutablePath = @"%PROGRAMFILES(x86)%\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe",
RegistrySubKey = @"Software\Microsoft\VisualStudio\11.0"
}
};
foreach (var version in versions)
{
var executablePath = Environment.ExpandEnvironmentVariables(version.ExecutablePath);
if (File.Exists(executablePath))
{
return new VsVersion(executablePath, version.RegistrySubKey);
}
}
return null;
}
private VsVersion(string executablePath, string registrySubKey)
{
ExecutablePath = executablePath;
RegistrySubKey = registrySubKey;
}
public string ExecutablePath { get; }
public string RegistrySubKey { get; }
}