props/vsprops:工程属性表文件(project property sheet)
后者为vs2008的,前者为vs2010及以后版本的,其主要包含工程属性配置相关,可以单独提取出来供不同工程项目公共使用,此外不同项目还可以追加、修改该继承(加载)的属性表,其他引用了该公共属性表的工程不受到影响;此属性表文件可以节省配置时间开销、减少配置错误率,减少工程的重复设置,最终只要设置一次就可以了,尤其是当解决方案下有很多的工程需要修改配置时,其效果显而易见。
创建工程属性表:
无论是vsprops或props,创建时可通过以下步骤:
1. 打开菜单栏View(视图)下的Property Manager(属性管理器),此时出现的属性管理器面板属性页;
2. 展开任意一个工程项目,可以看到内部提供了Debug、Release以及相应的Win32和x64位的版本属性,如果要单独对某一种属性添加属性表,可在其上右键选择添加新项目属性表,并设置属性表名称、位置等;
3. 双击该创建的属性表,便可编辑该属性表的工程设置;可根据需要设置,如输入输出、编译器相关、链接器相关、清单工具、库管理以及事件、自定义生成工具等,此类设置与普通工程的属性配置类似;
4. 此后,保存该配置的属性表即可。
使用工程属性表:
操作类似于创建过程;
1. 打开菜单栏View(视图)下的Property Manager(属性管理器),此时出现的属性管理器面板属性页;
2. 展开需要添加属性表的工程项目,并对需要添加属性的Debug、Release以及相应的Win32和x64位的版本属性中,右键添加现有属性表,将之前创建的属性表添加进去即可。
重定义自己的工程属性:
在添加了该属性表后,可根据需要修改项目工程属性,如增加、修改、删除等操作(对原添加的属性表无影响),若直接修改添加的属性表也可以,不过若该属性表为其他工程项目共享的(文件位置),则会影响其他工程
的属性表配置的,故一般情况下若某工程特殊需要,则只需要修改当前工程属性即可而不是属性表。
props/vsprops异同点:
相同点:均为属性表文件,内部为工程属性配置相关信息,可以节省配置时间开销、减少配置错误率,减少工程的重复设置,只设置一次即可;
不同点:当添加前者时,属性表的信息被直接写入了工程属性种,后者却未写入工程属性,并且添加属性表后的工程属性“常规”下会有“继承项目属性表”项,内容即为该添加的属性表路径;
此外后者若修改工程属性后可能会出现重新加载工程文件时工程属性配置信息丢失或异常的可能性(有待验证,之前有出现过此类状况);而前者不会出现此类问题。
小结:
虽然props/vsprops属性表可以减少重复配置,减少配置出错,不过基本上在不同大的项目中解决方案、工程配置还是有很大的不同的,优势暂时不是很大,但对同一解决方案下还是很可观的;
当然可以考虑配置通用的、泛型一点的属性表,以实现真正的公用的目的。
最后就是不同VS版本转换、升级产生的问题,低版本可直接将自动vsprops转化为props格式,不过不同版本转化后可能出现某些不兼容的情况;这也是不同VS IDE版本下实现移植可能出现的各种问题之一。