检查是否安装了.net的完整版本

本文关键字:版本 net 是否 安装 检查 | 更新日期: 2023-09-27 17:49:47

我正在构建一个ExcelDNA插件,需要完整版本的。net(4.0或3.5)(我正在使用System.Web的某些部分)。因此,只有客户端版本的用户会得到错误。

如果只安装了客户端版本,我喜欢在启动时提示用户"获取最新"版本。

是否有万无一失的方法来检查是否安装了完整版本?通过谷歌搜索,似乎许多人建议检查注册表,但这似乎容易出错,因为有许多。net版本。在这种情况下,我需要检查哪些路径来构建:

bool IsFullDotNetVersion()
{
}

检查一个只在完整版本中可用的功能是否存在是可能的/好主意?也就是说,是否可以检查系统。Web存在于环境中?(不包括在客户端版本的。net对吗?)

作为一个附带问题:我如何可以很容易地测试我的应用程序与不同的。net版本安装在我的系统上。有。net切换器吗?

检查是否安装了.net的完整版本

查看GAC中是否存在System.Web(或任何您需要的汇编)。

下面是一些可以在我的机器上运行的代码。

private static const string BasePath = @"c:'windows'assembly";
public static bool HasDotNetFullversion()
{
    var gacFolders = new List<string>()
    {
        "GAC", "GAC_32", "GAC_64", "GAC_MSIL",
        "NativeImages_v2.0.50727_32", "NativeImages_v2.0.50727_64"
    };
    var assemblyFolders = from gacFolder in gacFolders
                          let path = Path.Combine(BasePath, gacFolder)
                          where Directory.Exists(path)
                          from directory in Directory.GetDirectories(path)
                          select directory;
    var hasSystemWeb = assemblyFolders.Any(x =>
        x.EndsWith("system.web", StringComparison.InvariantCultureIgnoreCase));
}

可能重复。如何检测安装了哪些。net框架版本和服务包?简短的回答是,您需要读取注册表

我建议您不要尝试检测客户端计算机使用的是哪个。net版本,您可以直接将完整的。net安装程序捆绑到您的安装程序中。

换句话说,在安装时检测它并采取适当的操作。这是处理可能丢失的框架部分的常用方法。