【问题标题】:How to get expanded path from EnvDTE / VCProjectEngine如何从 EnvDTE / VCProjectEngine 获取扩展路径
【发布时间】:2011-12-20 06:40:11
【问题描述】:

我正在尝试编写一个工具来创建一个包含来自一个 Visual Studio 2010 解决方案的所有 PDB 文件的 zip 文件。

我可以使用以下代码获取解决方案中的每个 PDB 文件路径。但是,属性值包含 Visual Studio 宏,如 $(TargetDir)、$(TargetName) 等。

EnvDTE API 中是否有将这些宏扩展为当前值的函数?

另一方面,也欢迎任何其他可以实现我最初目标的方法!

谢谢

        System.Type t = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
        object obj = Activator.CreateInstance(t, true);
        DTE dte = (DTE)obj;
        Solution sln = dte.Solution;
        sln.Open(args[0]);
        while (sln.IsOpen == false)
        {
            System.Threading.Thread.Sleep(100);
        }

        sln.SolutionBuild.SolutionConfigurations.Item("Release").Activate();

        foreach (EnvDTE.Project project in sln.Projects)
        {
            Console.WriteLine("Inspecting project {0}", project.Name);

            VCProject vcproj = (VCProject)project.Object;

            if (vcproj == null) // this is not a visual c++ project
                continue;

            IVCCollection cfgs = vcproj.Configurations;
            VCConfiguration cfg = cfgs.Item(1);
            VCLinkerTool tool = cfg.Tools("VCLinkerTool");
            if (tool == null) // this is not a DLL/EXE project
                continue;
            Console.WriteLine("Program database = " + tool.ProgramDatabaseFile);
        }

【问题讨论】:

    标签: visual-studio-2010 envdte


    【解决方案1】:

    我没有在 VS2010 上尝试过这个,但是在 VS2008 中你可以调用 VCConfiguration.Evaluate 来做到这一点。在您的示例中,它将是这样的:

    string evaluatedPdbPath = cfg.Evaluate(tool.ProgramDatabaseFile);
    

    【讨论】:

      猜你喜欢
      • 2022-06-23
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 2020-08-12
      • 2017-01-26
      • 1970-01-01
      相关资源
      最近更新 更多