質問: .netアセンブリがx86またはx64向けにビルドされたかどうかを判断する方法は? .netアセンブリの任意のリストがあります。各dllが(x64または任意のcpuとは対照的に)x86用にビルドされているかどうかをプログラムで確認する必要があります。これは可能ですか?
回答: system.reflection.assemblyname.getassemblyname(string assemblyfile)を見てください返されたassemblynameインスタンスからアセンブリメタデータを調べることができます。powershellの使用: [36] c:\> [reflection.assemblyname] :: getassemblyname( "$ {pwd}\microsoft.glee.dll")| fl 名前:microsoft.glee バージョン:1.0.0.0 cultureinfo: codebase:file:/// c:/ projects/powershell/buildanalyzer /... escapedcodebase:file:/// c:/ projects/powershell/buildanalyzer/... processorarchitecture:msil flags:publickey hashalgorithm:sha1 versioncompatibility:samemachine keypair: fullname:microsoft.glee、version = 1.0.0.0、culture =いや... ここで、 processorarchitecture はターゲットプラットフォームを識別します。 amd64:x64アーキテクチャに基づく64ビットプロセッサ。 arm:armプロセッサー。 ia64:64ビットintel itaniumプロセッサのみ。 msil:プロセッサおよびワードごとのビットに関してニュートラル。 x86:64ビットプラットフォーム(wow64)上のネイティブまたはwindows on windows環境の32ビットintelプロセッサ。 none:プロセッサとワードごとのビットの未知または未指定の組み合わせ。 この例ではpowershellを使用してメソッドを呼び出しています。