以编程方式更改项目设置

时间:2017-10-05 12:25:12

标签: visual-studio mfc

我有一个旧的MFC解决方案,里面有120个项目。 现在我试图用VisualC 2017编译它,但每个项目都会发出错误:

  

无法打开文件mfc140d.lib

打开项目属性,将平台工具集更改为VS2017 141,将语言版本更改为C ++ 17修复它。 但是,对于120个项目来说,这需要花费很多时间,然后在发布版本中使用相同的时间。哪些是项目文件中的设置,我可以以编程方式更改以设置这两个选项?我肯定找不到它们

1 个答案:

答案 0 :(得分:0)

编写了一个python脚本,如果不存在,则将stdcpp17和v141添加到vcxproj文件中。也许有人找到它的用途:

def get_all_files(basedir):
    for root, subfolders, files in os.walk(basedir):
        for file in os.listdir(root):
            yield root, file

def all_lines_from_file(file):
    with open(file, 'r') as fd:
        for line in fd.readlines():
            yield line

def update_VCXPROJ():
    standard = '<LanguageStandard>stdcpp17</LanguageStandard>'
    toolset = '<PlatformToolset>v141</PlatformToolset>'
    add1 = '<CharacterSet>MultiByte</CharacterSet>'
    add2 = '<DebugInformationFormat>'

    for root, file in get_all_files('c:/projects/6thcycle/sources/'):
        if not file.lower().endswith('.vcxproj'):
            continue

        thisfile = ''
        for line in all_lines_from_file('{0}/{1}'.format(root, file)):
            if toolset in line or standard in line:
                continue

            if add1 in line:
                line += '    {0}\n'.format(toolset)
            elif add2 in line:
                line += '      {0}\n'.format(standard)

            thisfile += line

        with open('{0}/{1}'.format(root, file), 'w') as fd:
            fd.write(thisfile)    

update_VCXPROJ()