天天看點

VC2005 轉換成 VC2003

今天看到一篇博文,說如何把VC2005工程轉VC2003

其實用手工完成也很簡單。文章最後将給出方法。先把博文轉載如下。

今天在老外的網站上找到一個小工具 testConvert.exe, 能把VC2005的工程轉換為VC2003,實在是爽,而且還給了源碼。。哈哈 http://dl2.csdn.net/down4/20070718/18143940621.zip

舉個例子

D:/dx9/ 目錄下 有 xxx.vcproj,是VC2005生成的

進入cmd控制台,

testConvert d:/dx9/***.vcproj

ok,就行了。

// code

VC2005 轉換成 VC2003

#include  " stdafx.h "

VC2005 轉換成 VC2003

#include  < atlrx.h >

VC2005 轉換成 VC2003

#include  < string >

VC2005 轉換成 VC2003

using   namespace  std;

VC2005 轉換成 VC2003
VC2005 轉換成 VC2003

int  _tmain( int  argc, _TCHAR *  argv[])

VC2005 轉換成 VC2003

{

VC2005 轉換成 VC2003

    if(2 != argc){

VC2005 轉換成 VC2003

        cout << " usage : theExe <file>" << endl;

VC2005 轉換成 VC2003

        return -1;

VC2005 轉換成 VC2003

    }

VC2005 轉換成 VC2003
VC2005 轉換成 VC2003

    //read file to memory

VC2005 轉換成 VC2003

    string strProject = argv[1];

VC2005 轉換成 VC2003

    FILE* fp = NULL;

VC2005 轉換成 VC2003

    if(NULL == (fp = fopen(strProject.c_str(), "r"))){

VC2005 轉換成 VC2003

        cout << " cannot find the project" << endl;

VC2005 轉換成 VC2003

        return -1;

VC2005 轉換成 VC2003

    }

VC2005 轉換成 VC2003
VC2005 轉換成 VC2003

    string strText;

VC2005 轉換成 VC2003
VC2005 轉換成 VC2003

    while(!feof(fp)){

VC2005 轉換成 VC2003

        strText += fgetc(fp);

VC2005 轉換成 VC2003

    }

VC2005 轉換成 VC2003
VC2005 轉換成 VC2003

    fclose(fp);

VC2005 轉換成 VC2003
VC2005 轉換成 VC2003

    //replace it

VC2005 轉換成 VC2003

    CAtlRegExp<> oRegExp;

VC2005 轉換成 VC2003

    oRegExp.Parse("Version="[7-9].[0-9]0"");

VC2005 轉換成 VC2003
VC2005 轉換成 VC2003

    CAtlREMatchContext<> oMatchContext;

VC2005 轉換成 VC2003

    if (!oRegExp.Match(strText.c_str(), &oMatchContext))

VC2005 轉換成 VC2003

    {

VC2005 轉換成 VC2003

        cout << " invalidate format" << endl;

VC2005 轉換成 VC2003

        return -1;

VC2005 轉換成 VC2003

    }

VC2005 轉換成 VC2003
VC2005 轉換成 VC2003

    string strNewText = strText.substr(0, strText.size() - lstrlen(oMatchContext.m_Match.szStart)) + "Version="7.00"" + 

VC2005 轉換成 VC2003

        strText.substr(strText.size() - lstrlen(oMatchContext.m_Match.szEnd), -1);

VC2005 轉換成 VC2003
VC2005 轉換成 VC2003

    //backup

VC2005 轉換成 VC2003

    string strBackProject = strProject + "_old";

VC2005 轉換成 VC2003

    CopyFile(strProject.c_str(), strBackProject.c_str(),FALSE);

VC2005 轉換成 VC2003
VC2005 轉換成 VC2003

    //dump it to disk

VC2005 轉換成 VC2003

    if(NULL == (fp = fopen(strProject.c_str(), "r+"))){

VC2005 轉換成 VC2003

        cout << " cannot find the project" << endl;

VC2005 轉換成 VC2003

        return -1;

VC2005 轉換成 VC2003

    }

VC2005 轉換成 VC2003
VC2005 轉換成 VC2003

    fwrite(strNewText.c_str(),1,strNewText.size() - 1, fp);

VC2005 轉換成 VC2003
VC2005 轉換成 VC2003

    fclose(fp);

VC2005 轉換成 VC2003
VC2005 轉換成 VC2003

    return 0;

VC2005 轉換成 VC2003

} 我經常使用的手工轉換方法。 其實隻要修改兩個檔案就可以了。 1是.sln,記事本打開項目的sln檔案,修改Format Version 9.00 為 Format Version 8.00 然後是.vcproj檔案,修改Version="8.00"為Version="7.10" 這樣就可以用VC2003打開VC2005的工程項目了。

繼續閱讀