private const int REGDB_E_CLASSNOTREG = unchecked((int)0x80040154);
public static IEnumerable<(string, string)> GetVisualStudioInstallPaths()
{
var result = new List<(string, string)>();
try
{
var query = new SetupConfiguration() as ISetupConfiguration2;
var e = query.EnumAllInstances();
int fetched;
var instances = new ISetupInstance[1];
do
{
e.Next(1, instances, out fetched);
if (fetched > 0)
{
var instance2 = (ISetupInstance2)instances[0];
result.Add((instance2.GetInstallationVersion(), instance2.GetInstallationPath()));
}
}
while (fetched > 0);
}
catch (COMException ex) when (ex.HResult == REGDB_E_CLASSNOTREG)
{
}
catch (Exception)
{
}
return result;
}
6条答案
按热度按时间cpjpxq1n1#
根据应用程序的不同,可能最好询问用户,但这里有一些C#代码应该可以完成VS2008的任务。
pgx2nnw82#
通过搜索注册表可能可以找到它,但是由于我需要构建脚本的解决方案,所以一直使用环境变量来实现这一点。
注意:要查询的环境变量的名称特定于版本。
对于VS2005,您可以使用VS80COMNTOOLS
对于VS2008,您可以使用VS90COMNTOOLS
如果在命令提示符下键入SET VS90COMNTOOLS,您将看到:VS90COMNTOOLS=C:\程序文件\Microsoft Visual Studio 9.0\常用7\工具
因此,向上两个文件夹找到安装路径的根目录。
u4vypkhs3#
这是了解VS或任何其他程序的安装文件夹的最快方法。
打开VS代码并在其运行时;打开Windows任务管理器并导航到详细信息选项卡。
右键单击现在应该正在运行的Code.exe应用程序,然后选择选项打开文件位置:
Windows任务管理器〉详细信息选项卡〉右键单击Code.exe〉打开文件位置
ftf50wuq4#
从注册表中选择“HKLM\软件\Microsoft\Visual Studio \9.0\Visual Studio 2008的安装目录
guykilcj5#
这是Visual Studio的某种外接程序吗?
因为否则,您需要注意运行您的程序的人可能实际上没有安装Visual Studio。
如果 * 已 * 安装,通常可以在注册表中的已知位置找到它,例如VS2008的
HKCR/Applications/devenv.exe/shell/edit/command
。sy5wg1nm6#
对于较新版本的VS,最好从Microsoft提供的API使用,因为安装信息不再正确地保存在注册表中。
1.安装Nuget包Microsoft.VisualStudio.安装.配置.本机
1.执行此操作(返回的是包含所有VS示例的版本和路径的元组):
问候