加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何确定DLL是需要完整的.NET 4还是仅需要客户端配置文件

发布时间:2020-12-14 02:49:40 所属栏目:Windows 来源:网络整理
导读:使用第三方程序集时,我需要一种方法来检测它们是需要完整的.NET 4还是仅需要.NET 4 Client Profile. 我已经看到了其他方法来检测引用Determine .NET Framework version for dll的.NET版本,但该问题中概述的方法没有显示如何检测Client Profile vs Full.可能
使用第三方程序集时,我需要一种方法来检测它们是需要完整的.NET 4还是仅需要.NET 4 Client Profile.

我已经看到了其他方法来检测引用Determine .NET Framework version for dll的.NET版本,但该问题中概述的方法没有显示如何检测Client Profile vs Full.可能吗?

我正在寻找任何解决方案,它不一定是代码/运行时解决方案.

解决方法

请注意,下面的解决方案特定于.NET 4.0框架,TargetFrameworkAttribue是4.0的新功能.

我编译了两个应用程序,一个针对客户端框架,另一个针对完整.我在ildasm.exe中打开它们,发现它们都应用了TargetFrameworkAttribute.您只需使用反射即可查看值:

using System;
using System.Linq;
using System.Runtime.Versioning;

class Program
{
    static void Main(string[] args)
    {
        var a = System.Reflection.Assembly.GetExecutingAssembly();
        var att = a.GetCustomAttributes(false).OfType<TargetFrameworkAttribute>().Single();

        Console.WriteLine(att.FrameworkDisplayName);
        Console.Read();
    }
}

更新:是的确,针对“.NET Framework 3.5客户端配置文件”编译应用程序不包含该属性(代码无法再看到它,ildasm不会显示它).除了你链接的其他答案之外,我不知道如何在这种情况下确定目标框架.

为了节省我认为对你的代码库有无意义的限制,我会让生活更轻松,只需针对完整的框架.如果客户端具有安装客户端配置文件的权限,那么对于Full框架也是如此 – 它只是略大一些(我发现一个消息来源说它只增加了15%,从而否定了大部分“小客户端软件包”的好处,41MB而不是48MB).你的来电.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读