Visual studio 如何从VCConfiguration获取自定义生成工具属性 目前在处理使用自定义生成工具生成的文件时,对VisualStudioC++进行扩展。在我的一生中,我找不到一种方法来深入到当前选定的项目的属性面板中

Visual studio 如何从VCConfiguration获取自定义生成工具属性 目前在处理使用自定义生成工具生成的文件时,对VisualStudioC++进行扩展。在我的一生中,我找不到一种方法来深入到当前选定的项目的属性面板中,visual-studio,visual-c++,visual-studio-extensions,vsix,Visual Studio,Visual C++,Visual Studio Extensions,Vsix,情景: 我在解决方案中有一个test.myfile文件 它设置为使用自定义生成工具生成 你可以想象它是这样的 我目前在项目菜单中有一个命令按钮,按预期执行。我可以获得选定的项目,并从中获取选定的项目项目。我将项目的VCProjectItem和VCConfiguration绑定到活动配置的文件 如何从属性页获取“命令行”属性 如何从属性页获取“命令行”属性 在我做了深入的研究之后,我发现我们无法使用属性来获取自定义文件的属性命令。它可用于获取项目的属性(右键单击项目),而不是特定文件的属性(右

情景:

  • 我在解决方案中有一个
    test.myfile
    文件
  • 它设置为使用自定义生成工具生成
你可以想象它是这样的

我目前在项目菜单中有一个命令按钮,按预期执行。我可以获得选定的项目,并从中获取选定的项目项目。我将项目的VCProjectItem和VCConfiguration绑定到活动配置的文件

如何从属性页获取“命令行”属性

如何从属性页获取“命令行”属性

在我做了深入的研究之后,我发现我们无法使用属性来获取自定义文件的属性命令。它可用于获取项目的属性(右键单击项目),而不是特定文件的属性(右键单击文件)

或者从另一个角度考虑,因为该文件是使用类似CustomBuild的节点创建的,所以我们可以在xxxx.vcxproj文件中获得它们

我们可以使用获取当前项目的当前项目文件,然后读取父节点自定义构建中的子节点命令

例如:

        using EnvDTE;
        using System.Xml;

        .........

        VCProject prj; 
        XmlDocument doc = new XmlDocument();
        DTE dTE = Package.GetGlobalService(typeof(DTE)) as DTE;
        prj = dTE.Solution.Projects.Item(1).Object;
        doc.Load(prj.ProjectFile);  //read the proj file for the current project
        XmlElement root = doc.DocumentElement;
        XmlNodeList nodeList = root.GetElementsByTagName("CustomBuild"); //get the customBuild Node
        string str="";
        foreach (XmlNode node in nodeList) //search the child node 'command' in the parent node named custombuild
        {
            str += node["Command"].InnerText.ToString()+"-----";
        }
因此,请不要忘记引用存在于
C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\PublicAssemblys
中的envdte.dll


希望它能对您有所帮助。

看起来这就是答案,我很惊讶我没有偶然发现它。尽管如此,如何访问项目中某个项的VCCustomBuildTool结构尚不清楚。您是否知道如何从VCProjectItem或DTE获得一个?谢谢当然不像我希望的那样方便。我能够用一种与您列出的方法非常相似的方法得到我所需要的,所以我将其标记为已接受的答案。谢谢