介紹
Madifest是個XML的描述文件,對于每個DLL有DLL的Manifest文件,對于每個應(yīng)用程序Application也有自己的Manifest。對于應(yīng)用程序而言,Manifest可以是一個和exe文件同一目錄下的.manifest文件,也可以是作為一個資源嵌入在exe文件內(nèi)部的(Embed Manifest)。
XP以前版本的windows,會像以前那樣執(zhí)行這個exe文件,尋找相應(yīng)的dll,沒有分別Manifest只是個多余的文件或資源,dll文件會直接到system32的目錄下查找,并且調(diào)用。這樣,如果公共DLL升級,將會導(dǎo)致之前安裝的應(yīng)用程序不能使用,這就是“DLL Hell”的來源。為了解決這個問題,.NET開發(fā)提出了side-by-by的開發(fā)方法,來避免這個問題。主要方法,就是通過Manifest文件來查找相應(yīng)的DLL。XP及以后的系統(tǒng)都集成了這樣一種查找DLL的方法。
提取Manifest
默認(rèn)Manifest文件都是內(nèi)嵌在exe/dll中的,如果需要查看。VS提供mt.exe工具來從exe/dll中提取Manifest文件。
mt.exe -inputresource:d:\test.exe -out:d:\test.manifest
的Manifest文件有關(guān)設(shè)置
我們編譯MFC工程時,會在stdafx.h文件里看到下列代碼。