【问题标题】:Visual Studio Addin - Get Name\Path of binary of a c++ project?Visual Studio Addin - 获取 C++ 项目二进制文件的名称\路径?
【发布时间】:2011-05-09 06:18:09
【问题描述】:

我想使用 Visual Studio C# 插件获取 C++ 项目的二进制名称。

我搜索并发现,EnvDTE.Configuration.properties 应该有一个名为“AssemblyName”的元素,但 C++ 项目似乎没有这个元素。

有人知道我在哪里可以在 Visual Studio 插件中获得这些信息吗?

【问题讨论】:

  • C++ 项目没有像 C# 项目那样的“程序集”。你说的“组装”到底是什么意思?
  • 嘿,好吧。我想知道垃圾箱的名称。带有路径的 dll 或 exe。
  • 您应该可以使用 $(OutputPath) 和 $(TargetName) 来检索它。
  • 如何在插件中解析这些宏?

标签: c++ visual-studio add-in


【解决方案1】:

对于 VC++ 项目,您需要访问 VCConfiguration 对象,您应该能够从 EnvDTE.ProjectObject 属性中获得该对象,例如:

EnvDTE.Project project = ...
VCProject vcProj = (VCProject)project.Object;
IVCCollection configs = (IVCCollection)vcProj.Configurations;
VCConfiguration config = (VCConfiguration)configs.Item(configName); // like "Debug"

此时VCConfiguration 如何获得正确的属性取决于您的设置。您可以从Tools 属性访问VCLinkerTool 并获取OutputFile 和其他属性。或者,如果您使用较新的继承属性表,您可以通过 Rules 属性访问它们。

IVCCollection tools = (IVCCollection)config.Tools;
VCLinkerTool linkTool = (VCLinkerTool)tools.Item("Linker Tool");
string outputFile = linkTool.OutputFile;

// -------

IVCRulePropertyStorage ruleStorage = config.Rules.Item(ruleName);
string outputFile = ruleStorage.GetEvaluatedPropertyValue("TargetName");

【讨论】:

    【解决方案2】:

    为了获取二进制文件的完整路径,请按照@Chadwick 所说的步骤获取VCConfiguration 对象。然后,只需使用以下代码行:

    //returns the complete binary name including path as a string
    var primaryOutput = config.PrimaryOutput;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-11
      相关资源
      最近更新 更多