【发布时间】:2013-02-12 21:33:52
【问题描述】:
我知道官方的方式是注册,但这有点费时。
我必须检查几台 PC 上已安装的版本,它们都没有 VisualStudio,但它们都(可能)一个版本的 .NET 框架。
既然热水可能已经存在,我在哪里可以找到它?
【问题讨论】:
标签: .net
我知道官方的方式是注册,但这有点费时。
我必须检查几台 PC 上已安装的版本,它们都没有 VisualStudio,但它们都(可能)一个版本的 .NET 框架。
既然热水可能已经存在,我在哪里可以找到它?
【问题讨论】:
标签: .net
这是一个免费的轻量级工具,可以快速完成 - .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)
【讨论】:
【讨论】:
我在编写 PowerShell 脚本时经常遇到这个问题。我发现最好的方法是在以下每个基本目录中运行以下检查
不要忘记第二个目录,否则您的应用程序可能会在 64 位机器上崩溃。
对于每个起点,我都会查找与 v\d+\\.\d+\\.\d+ 匹配的目录并包含文件 mscorlib.dll。仅查找目录名称是不够的,因为名称可能存在而实际上没有安装该版本的框架。例如,如果你有一台 vista 机器,你也会有 v1.0.3705 和 v1.1.4322,但实际上都没有安装这些框架。
【讨论】:
这是一个代码,您可以将其放入 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') ;
}
}
}
【讨论】:
看看来自SmallestDotNet 的javascript。还有a good article over at the CodeProject。
【讨论】: