c# - 检测程序集是否以普通 .Net、CF 或 Silverlight 为目标的最简单方法是什么?

标签 c# .net silverlight detect coldfusion

我找到了 this question已经在 SO 上,但它只涵盖 CF,所以我的问题是:如何检测程序集是否是为普通 .Net、CF 或 Silverlight 构建的?

最佳答案

使用与链接问题的答案相同的方法:

public enum AssemblyType 
{ 
    CompactFramework, 
    Silverlight,
    FullFramework, 
    NativeBinary 
} 

public AssemblyType GetAssemblyType(string pathToAssembly) 
{ 
    try 
    { 
        Assembly asm = Assembly.LoadFrom(pathToAssembly); 
        var mscorlib = asm.GetReferencedAssemblies().FirstOrDefault(a => string.Compare(a.Name, "mscorlib", true) == 0); 
        ulong token = BitConverter.ToUInt64(mscorlib.GetPublicKeyToken(), 0); 

        switch (token) 
        { 
            case 0xac22333d05b89d96: 
                return AssemblyType.CompactFramework; 
            case 0x89e03419565c7ab7: 
                return AssemblyType.FullFramework; 
            case 0x8e79a7bed785ec7c:
                return AssemblyType.Silverlight;
            default: 
                throw new NotSupportedException(); 
        } 
    } 
    catch (BadImageFormatException) 
    { 
        return AssemblyType.NativeBinary; 
    } 
}

关于c# - 检测程序集是否以普通 .Net、CF 或 Silverlight 为目标的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2178550/

相关文章:

c# - 系统参数异常 : Format of the initialization string does not conform to specification starting at index 197?

c# - 如何设置 ActiveX 控件名称

html - 如何删除字符串生成器表中的神秘边框?

c# - LINQ to SQL 查询以确定值是否以数字开头

silverlight - MediaElement.NaturalDuration 小于音频的实际持续时间

silverlight - oob silverlight应用程序如何通过windows进行通信

c# - Microsoft Visual C# 2008 减少加载的 dll 的数量

c# - 哪个更快,客户端或服务器端 dom 附加?

c# - 你是如何学习/学习 Silverlight 的最佳方式

c# - 从插件加载程序集