使用第三方程序集时,我需要一种方法来检测它们是需要完整的.NET 4还是只需要.NET 4 Client Profile。
我已经看到了检测引用Determine .NET Framework version for dll的.NET版本的其他方法,但该问题中概述的方法未显示如何检测客户端配置文件与完整版。有可能吗?
我正在寻找任何解决方案,它不一定是代码/运行时解决方案。
答案 0 :(得分:2)
请注意以下解决方案特定于.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没有它的特色。除了你链接的其他答案之外,我不知道在这种情况下如何确定目标框架。
为了节省强大的 I ,看作对您的代码库的无意义限制,我会让生活变得更轻松,只需针对完整的框架。如果客户端具有安装客户端配置文件的权限,那么对于Full框架也是如此 - 它只是略大一些(我发现一个消息来源说它只增加了15%,从而否定了大部分“小客户端软件包”的好处,41MB而不是48MB)。你的电话。