首页 > 解决方案 > 是否可以在 Visual Studio 之外以编程方式读取 C/C++ 项目的 MSBuild 宏?

问题描述

我正在尝试对 Visual Studio 2017 项目 ( .vcxproj) 进行大规模编辑。此编辑有条件地取决于某些项目属性。可悲的是,它比我使用共享.props文件所能做的更复杂。

我可以重新实现获得所需宏所需的函数,例如$(TargetExt). 但我想知道是否有一些微软构建工具可以将所需的宏打印到标准输出,以便我可以这样做:

getMacroValue.exe -project MyProject.vcxproj -value TargetExt

有没有类似的东西,或者一些会导致相同结果的黑客/技巧?如果可行,我不介意肮脏的解决方案,我正在做的是一次性的事情,但是有 50 多个项目要编辑,每次编辑需要 5 分钟,因此编写脚本是值得的。

标签: visual-studiomsbuildvisual-studio-2017

解决方案


也许这个示例(C# 控制台应用程序)可以帮助您从 proj 文件中读取属性值。

static void Main(string[] args)
{
    if (args.Length < 2)
    {
        return;
    }

    string path = args[0];
    string macro = args[1];

    ProjectCollection collection = new ProjectCollection();
    Project project = new Project(path, null, null, collection, ProjectLoadSettings.IgnoreMissingImports);

    string val = project.GetPropertyValue(macro);
    Console.WriteLine(val);

    Console.ReadLine();
}

推荐阅读