Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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
.net 如何(通过代码)确定程序集标志?_.net_Assemblies_32bit 64bit_Corflags - Fatal编程技术网

.net 如何(通过代码)确定程序集标志?

.net 如何(通过代码)确定程序集标志?,.net,assemblies,32bit-64bit,corflags,.net,Assemblies,32bit 64bit,Corflags,我需要编写一个类似CorFlags的应用程序。 如果我有一个指向程序集文件的路径,如何读取它的CorFlags 我特别需要知道这个程序集是CPU还是x86 我希望避免使用反射加载程序集,因为我需要扫描许多文件 看看链接,它描述了与您的查询类似的情况。公认的答案描述了如何使用反射和。这可能对你有帮助 编辑:有点晚了,但这里有一个例子: namespace ConsoleApplication1 { using System.Reflection; public class Pro

我需要编写一个类似CorFlags的应用程序。 如果我有一个指向程序集文件的路径,如何读取它的CorFlags

我特别需要知道这个程序集是CPU还是x86

我希望避免使用反射加载程序集,因为我需要扫描许多文件

看看链接,它描述了与您的查询类似的情况。公认的答案描述了如何使用反射和。这可能对你有帮助

编辑:有点晚了,但这里有一个例子:

namespace ConsoleApplication1
{
    using System.Reflection;

    public class Program
    {
        public static void Main()
        {
            Assembly a = Assembly.GetExecutingAssembly();

            PortableExecutableKinds peKind;
            ImageFileMachine machine;

            a.ManifestModule.GetPEKind(out peKind, out machine);
        }
    }
}

System.Reflection.Assembly在这方面有很多帮助

var asmbly = Assembly.ReflectionOnlyLoad("filename");
var PeFlags = asmbly.ManifestModule.GetPEKind();
//PeFlags is effectively CorFlags.

如果您不想使用反射,可以签出

CCI或


Mono.Cecil

CCI工作得很好。比使用反射加载所有程序集快得多预期性能更好,因为CCI只是直接从程序集读取元数据。反射将加载整个程序集,这注定要慢得多。幸运的是,CCI已经开源并公开发布。:)GetPEKind在检查32位汇编时在64位进程中失败感谢提示:)