一分鐘明確 VS manifest 原理

2021-09-06 17:30:45 字數 1220 閱讀 1529

什麼是vs 程式的manifest檔案

manifest 是vs程式用來標明所依賴的side-by-side組建,如atl, crt等的清單。

為什麼要有manifest檔案

一台pc上,用一組建往往會有不止乙個版本號(c:/windows/winsxs或系統資料夾下),程式在載入的時候,不知載入哪個,於是manifest檔案來指明。

manifest在哪兒,怎樣建立。

假設用vs開發,能夠set通過porperty->configuration properties->linker->manifest file->generate manifest to yes來自己主動建立manifest來指定系統的和crt的assembly版本號。

除了這樣產生外部的manifest file,還有embedded manifest資訊能夠被寫到所生成的二進位制檔案內

set porperty->configuration properties->manifest tool->embed manifest  to yes

對於xp及早前的windows版本號,external manifest會比embed manifest有更高的優先順序,但對於windows server及後的版本號,相反。

為什麼我的manifest明明指明

name="microsoft.vc80.debugcrt" version="8.0.50608.0",

可是用depends.exe工具卻發現引用的是8.00.50727.42呢?

由於在c:/windows/winsxs/policies下,有publisher configuration file也叫policy檔案,如8.0.50727.42.policy檔案對依賴做了重定向:

怎樣決定我程式manifest資訊所指定的assembly版本號資訊?

在assembly標頭檔案裡,assembly的版本號資訊被指明了。如crtassem.h中

#ifndef _crt_assembly_version

#define _crt_assembly_version "8.0.50608.0"

#endif

能夠改動8.0.50608.0為8.0.50727.42以產生你想要的manifest資訊。

帶上全部依賴的assembly和對應的manifest檔案(c:/windows/winsxs),注意,manifest資訊要直接能夠指定到所附帶的assembly dlls,不須要依賴policy的重定向。

一分鐘sed入門(一分鐘系列)

1.簡介 sed是一種行編輯器,它一次處理一行內容。2.sed呼叫方式 sed options command file s sed options f scriptfile file s 第一種直接在命令列中執行,第二種把命令寫到了指令碼中,二者無本質區別。示例 1 列印hello.txt的內容 ...

一分鐘看懂mysql 一分鐘,看懂易貨

從20世紀80年代開始,易貨公司在美國加拿大 澳大利亞等國興起,成為這些國家減少現金用量 增加銷售 減少庫存 開發新客戶 開闢新市場 促進經濟發展的重要產業。也成為了企業消化庫存商品 剩餘生產能力 無形資產的有效方式和在遭遇資金瓶頸時的新選擇。2015年以來,中國線下易貨店開始了矇眼狂奔,在河南南陽...

一分鐘管理

有效而優秀管理者的 三板斧 一分鐘管理 你和下屬一起設定 一分鐘目標 確保他們知道自己應該做什麼,以及好的工作表現是什麼樣的。之後,你會努力發現他們做對了什麼事,好對他們進行 一分鐘稱讚 最後,如果你們完全有能力做好某件事,卻沒能做好,你就對他們進行 一分鐘批評 一分鐘目標 1.擬定3 5 個目標,...