Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.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程序集是否是在不使用反射和第三方软件的情况下使用平台目标AnyCPU、AnyCPU、32位、x86、x64构建的_C#_.net - Fatal编程技术网

C# 如何确定.NET程序集是否是在不使用反射和第三方软件的情况下使用平台目标AnyCPU、AnyCPU、32位、x86、x64构建的

C# 如何确定.NET程序集是否是在不使用反射和第三方软件的情况下使用平台目标AnyCPU、AnyCPU、32位、x86、x64构建的,c#,.net,C#,.net,我对如何通过正确读取PE头直接从文件中读取汇编平台目标信息感兴趣。我知道可以通过assembly.reflectiononnlyload(rawsassembly)将程序集加载到新的AppDomain并通过assembly.ManifestModule.GetPEKind(out-var-peKind,out-var-machine)对其进行调查。我还知道第三方工具,如CorFlags.exe,可以读取CorFlag值。但我对直接从文件中获取平台目标信息感兴趣 谢谢 可能的结果: -------

我对如何通过正确读取PE头直接从文件中读取汇编平台目标信息感兴趣。我知道可以通过
assembly.reflectiononnlyload(rawsassembly)将程序集加载到新的
AppDomain
并通过
assembly.ManifestModule.GetPEKind(out-var-peKind,out-var-machine)对其进行调查。我还知道第三方工具,如
CorFlags.exe
,可以读取CorFlag值。但我对直接从文件中获取平台目标信息感兴趣

谢谢

可能的结果:

----------------------------------------------------------------
| Assembly target | Processor architecture | Is32Pref| Is32Req |
----------------------------------------------------------------
| Any CPU         | MSIL                   | false   | false   |
----------------------------------------------------------------
| Any CPU Pref32  | x86                    | true    |         |
----------------------------------------------------------------
| x64             | Amd64                  | false   | false   |
----------------------------------------------------------------
| x86             | x86                    | false   | true    |
---------------------------------------------------------------- 
解决方案基于以下链接:

,,


CorFlagsReader.cs-在Apache许可证下,版本2.0

注意此代码的许可问题。codeproject.com使用CPOL,这是一种“私人使用,请随意”,但它禁止重新发布和重新授权代码。感谢您提供的信息。在codeproject中,只有更新的枚举标记。最重要的代码部分来自codeplex。我还对代码做了一些更改,但核心仍然来自codeplex。因为我花了一天的时间来寻找阅读CorFlags的有效解决方案,而不使用反射或第三方软件,而且因为我发现了很多类似的问题,所以我认为分享这些问题会有所帮助。
var res = CorFlagsReader.ReadAssemblyMetadata("file.exe");
----------------------------------------------------------------
| Assembly target | Processor architecture | Is32Pref| Is32Req |
----------------------------------------------------------------
| Any CPU         | MSIL                   | false   | false   |
----------------------------------------------------------------
| Any CPU Pref32  | x86                    | true    |         |
----------------------------------------------------------------
| x64             | Amd64                  | false   | false   |
----------------------------------------------------------------
| x86             | x86                    | false   | true    |
----------------------------------------------------------------