Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检测程序集是否以普通.Net、CF或Silverlight为目标的最简单方法是什么?_C#_.net_Silverlight_Detect_Coldfusion - Fatal编程技术网

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

C# 检测程序集是否以普通.Net、CF或Silverlight为目标的最简单方法是什么?,c#,.net,silverlight,detect,coldfusion,C#,.net,Silverlight,Detect,Coldfusion,我已经找到了,但它只包含CF,所以我的问题是:如何检测程序集是为普通.Net、CF还是Silverlight构建的?我认为最简单的方法是查看给定程序集引用的mscorlib.dll版本。您可以使用mscorlib的公钥/版本号来分类.Net framework的哪个版本,因为它直接绑定到CLR。您可以使用对mscorlib的程序集引用来获取版本信息。我认为最简单的方法是查看给定程序集引用的mscorlib.dll版本。您可以使用mscorlib的公钥/版本号来分类.Net framework的哪

我已经找到了,但它只包含CF,所以我的问题是:如何检测程序集是为普通.Net、CF还是Silverlight构建的?

我认为最简单的方法是查看给定程序集引用的mscorlib.dll版本。您可以使用mscorlib的公钥/版本号来分类.Net framework的哪个版本,因为它直接绑定到CLR。您可以使用对mscorlib的程序集引用来获取版本信息。

我认为最简单的方法是查看给定程序集引用的mscorlib.dll版本。您可以使用mscorlib的公钥/版本号来分类.Net framework的哪个版本,因为它直接绑定到CLR。您可以使用对mscorlib的程序集引用来获取版本信息。

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

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; 
    } 
}

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

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; 
    } 
}