Visual studio 是否可以读取C/C++;在Visual Studio之外以编程方式进行项目?

Visual studio 是否可以读取C/C++;在Visual Studio之外以编程方式进行项目?,visual-studio,msbuild,visual-studio-2017,Visual Studio,Msbuild,Visual Studio 2017,我正在尝试对Visual Studio 2017项目进行大规模编辑(.vcxproj)。此编辑有条件地取决于某些项目属性。遗憾的是,这比使用共享的.props文件要复杂得多 我可以重新实现获取所需宏所需的函数,例如$(targetText)。但我想知道是否有某种Microsoft build工具可以将所需的宏打印到标准输出,以便我可以: getMacroValue.exe -project MyProject.vcxproj -value TargetExt 有没有类似的东西,或者一些黑客/诡

我正在尝试对Visual Studio 2017项目进行大规模编辑(
.vcxproj
)。此编辑有条件地取决于某些项目属性。遗憾的是,这比使用共享的
.props
文件要复杂得多

我可以重新实现获取所需宏所需的函数,例如
$(targetText)
。但我想知道是否有某种Microsoft build工具可以将所需的宏打印到标准输出,以便我可以:

getMacroValue.exe -project MyProject.vcxproj -value TargetExt
有没有类似的东西,或者一些黑客/诡计会导致同样的结果?我不介意肮脏的解决方案是否有效,我所做的是一次性的,但是有50多个项目需要编辑,每次编辑5分钟,因此编写脚本是值得的。

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

static void Main(字符串[]args)
{
如果(参数长度<2)
{
返回;
}
字符串路径=args[0];
字符串宏=args[1];
ProjectCollection集合=新建ProjectCollection();
Project=新项目(路径、null、null、集合、ProjectLoadSettings.IgnoreMissingImports);
字符串val=project.GetPropertyValue(宏);
控制台写入线(val);
Console.ReadLine();
}

问题在于,MSVC项目是各种包含项目、条件属性等的巨大垃圾。许多项目属性也是隐式设置的,即使它们在任何XML文件中都看不到。我可以解析XML,我确实用这种方式解析了项目文件中的一些内容,但这是不够的。经过我的研究,恐怕你做不到。我发现了一个名为的库,它还可以读取vcxproj文件。但它仍然有一些局限性。如:1。无法读取具有条件的属性组。2.可以读取props文件,但需要在vcxproj文件中显式导入它