一、简介
这个工具自动将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