我知道正式的方式是注册表,但这有点浪费时间。
我必须在几台PC上检查已安装的版本,它们都没有VisualStudio,但它们都是(可能) 版本的.NET框架。
由于热水可能已经存在,我在哪里可以找到它?
答案 0 :(得分:3)
答案 1 :(得分:3)
这是一款免费的轻量级工具,可以快速完成 - .NET Version detector 2007
如果您想手动执行此操作,this page会显示4-5个好方法。 MS Support page提供了一种方法,就像打开Framework文件夹并检查安装的版本(文件夹名称)一样简单!
但是,如果您想以编程方式执行此操作,HttpBrowserCapabilities
类会提供可通过GetClrVersions()
调用访问的Request.Browser.GetClrVersions()
方法。当然,正如其他人所提到的,你也可以通过Javascript查询浏览器的Navigator.UserAgent属性(我想这只会在IE中显示.NET版本):
javascript:alert(navigator.userAgent)
答案 2 :(得分:1)
编写PowerShell脚本时,我经常会遇到此问题。我发现最好的方法是在以下每个基本目录中运行以下检查
不要忘记第二个目录,否则您的应用程序可能会在64位计算机上崩溃。
对于每个起始点,我查找目录匹配v\d+\\.\d+\\.\d+
并包含文件mscorlib.dll。仅仅查找目录名是不够的,因为名称可能存在而实际上没有安装该版本的框架。例如,如果你有一个vista机器,你也会有v1.0.3705和v1.1.4322,但这些框架都没有实际安装。
答案 3 :(得分:0)
查看SmallestDotNet中的javascript。还有a good article over at the CodeProject。
答案 4 :(得分:0)
这是一个可以放在ASP.net网站或winforms中的代码
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
[DllImport("mscoree.dll")]
private static extern int GetCORSystemDirectory(
[MarshalAs(UnmanagedType.LPWStr)]StringBuilder pbuffer,
int cchBuffer, ref int dwlength);
static void Main(string[] args)
{
GetClrInstallationDirectory();
}
private static void GetClrInstallationDirectory()
{
int MAX_PATH = 260;
StringBuilder sb = new StringBuilder(MAX_PATH);
GetCORSystemDirectory(sb, MAX_PATH, ref MAX_PATH);
Console.WriteLine(sb.ToString());
while(Console.Read() != 'q') ;
}
}
}