一、簡介
這個工具自動將VC7工程轉換回VC6工程,換言之,就是將.sln/.vcproj這兩個文件轉 換到.dsw/.dsp文件。
注意:本轉換器在轉換期間只是建立(或覆蓋).dsw/.dsp文件,並沒有改變任何源代 碼。
二、由來
首先當然是MS並沒有提供這樣的工具,MS在出售開發工具時並沒有提供工程回退的轉 換功能使你感到很傷腦筋,甚至開始憎恨MS。
沒有這樣的工具,雖然你可以通過重建工程來湊合,但浪費時間並容易帶來錯誤。事 實上,在如下情形時這個工具是很有用的:
有人給你VC7工程,但你只安裝了VC6
你將工程從VC6升級到VC7,在你的目錄下同時存在.dsw/.dsp和.sln/.vcproj文件,並 且你希望保持這幾個文件的同步,使你在不需要使用兩個版本VC++的情況下任何時候都可 以打開這個工程開始工作。
提供兩個版本的工程(例如你在CodeProject中共享你的代碼時),而不用擔心讀者使 用的是哪個版本的開發工具。
三、如何使用
命令行形式:
prjconverter <solutionname (full filepath)>[.sln]
例如:
prjconverter c:\tmp\betterxml\betterxml.sln
可以在命 令行鍵入prjconverter.exe獲取更多信息
四、轉換了什麼
簡單的幾步就可以清楚這是如何工作的,打開.sln解決方案文件並轉換到.dsw文件格 式,包括所有的工程定義,依存信息和源代碼控制標記。
然後,所有.vcproj工程文件轉換為.dsp文件,我使用MSXML來解析.vcproj文件格式, 另外創建元模型( meta-model),然後將所有XML內容轉換到標准的.dsp符號行。
當然,我們要小心處理項目中的配置(debug,release,...),還有自定義的配置。
五、技術細節
代碼中slnprocess.cpp完成從.sln到.dsw的轉換。vcprojprocess.cpp完成從.vcproj 到.dsp的轉換。
vcprojconfiguration.cpp包含了所有工程元模型(meta-model)(即所有工程設置選項 )。在VC7中元模型是可編程的。具體可以查看此鏈接 ,事實上vcprojconfiguration.cpp 就是展現了這種元模型(meta-model,就像MS的內部代碼)
六、申明
這個工具在發布之前已經經過廣泛的測試(MFC/COM/ATL/控制台程序,make文件,...) ,雖然我希望知道是否有可以改進的地方,但我必須清楚地申明如果你的工程被該工具破 壞並不是我的錯。
下載工程轉換工具:http://www.vckbase.com/tools/downtools.asp?id=108
下載源代碼:http://www.vckbase.com/code/downcode.asp?id=2076