Dot-Net
如何確定 .NET 程序集是否包含非託管程式碼?
包含託管和非託管程式碼混合的 .NET 程序集不能與其他程序集進行 ILMerged。
如何驗證給定的 .NET 程序集是否包含純託管程式碼或託管程式碼和非託管程式碼的混合?
針對您的程序集執行PEVerify工具。
PEVerify.exe 是隨 Visual Studio 一起安裝的,例如這個是 Visual Studio 2012 自帶的:
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\PEVerify.exe
正如 nobugz 所建議的,查看 CLR 標誌的更簡單方法是使用該
corflags實用程序,它是 .NET 2.0 SDK 的一部分。如果未指定選項,則顯示給定圖像的標誌:
C:\>corflags Foo.dll Version : v2.0.50727 CLR Header: 2.5 PE : PE32 CorFlags : 9 ILONLY : 1 32BIT : 0 Signed : 1“ILONLY”位指示這是純託管程序集還是混合程序集。
請注意,使用者“nobugz”的評論表明這些標誌不能保證是正確的,因此這種方法可能不是萬無一失的。