3 回答

TA貢獻(xiàn)1963條經(jīng)驗 獲得超6個贊
我認(rèn)為最可靠的方法是確定所需的CLR版本。您可以通過使用ILDASM并查看“ MANIFEST”節(jié)點(diǎn)或Reflector并以IL形式查看“ Application.exe”節(jié)點(diǎn)的分散視圖來完成此操作。在這兩種情況下,都有注釋指示CLR版本。在ILDASM中,注釋為“ //元數(shù)據(jù)版本”,在Reflector中,注釋為“目標(biāo)運(yùn)行時版本”。
以下是名為WindowsFormsApplication1.exe的.NET WinForms應(yīng)用程序的示例:
ILDASM:
// Metadata version: v2.0.50727
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
.assembly extern System
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
反光板:
.module WindowsFormsApplication1.exe
.subsystem 0x0002
// MVID: {CA3D2090-16C5-4899-953E-4736D6BC0FA8}
// Target Runtime Version: v2.0.50727
您也可以查看引用的程序集列表,并查找具有最高版本號的引用。
同樣,使用ILDASM查看“ MANIFEST”節(jié)點(diǎn)數(shù)據(jù):
.assembly extern System.Drawing
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
.ver 2:0:0:0
}
.assembly extern System.Core
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 3:5:0:0
}
并使用Reflector,查看列出的每個參考的虛弱(仍為IL):
.assembly extern System.Core
{
.ver 3:5:0:0
.publickeytoken = (B7 7A 5C 56 19 34 E0 89)
}
通過查找具有最高版本元數(shù)據(jù)的引用,您可以確定引用來自哪個版本的Framework,這表明您需要安裝與應(yīng)用程序運(yùn)行相同的Framework版本。話雖如此,我不會將其視為100%可靠,但我認(rèn)為它不會很快改變。

TA貢獻(xiàn)1874條經(jīng)驗 獲得超12個贊
現(xiàn)在,您可以使用ILSpy來檢查程序集的目標(biāo)框架。加載程序集后,單擊程序集節(jié)點(diǎn)的根,您可以在TargetFramework聲明下找到信息:
[assembly: TargetFramework(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")]
- 3 回答
- 0 關(guān)注
- 986 瀏覽
添加回答
舉報