C#Visual Studio SDK:vcDirectory接口 我目前正在VisualStudio 2015中的VisualStudio Advin中工作,它将检索与加载的VisualC++项目相关的全局包含/库目录。

C#Visual Studio SDK:vcDirectory接口 我目前正在VisualStudio 2015中的VisualStudio Advin中工作,它将检索与加载的VisualC++项目相关的全局包含/库目录。,c#,visual-studio-2015,visual-studio-2017,visual-studio-addins,visual-studio-sdk,C#,Visual Studio 2015,Visual Studio 2017,Visual Studio Addins,Visual Studio Sdk,根据,接口作为Microsoft.VisualStudio.VCProject命名空间的成员存在。然而,当我在范围中有一个有效的VCProject引用时,我在访问这个接口时遇到困难 public List<string> IncludeDirectories() { List<string> includeDirs = new List<string>(); // assume VCProj() returns a valid VCProject o

根据,接口作为
Microsoft.VisualStudio.VCProject
命名空间的成员存在。然而,当我在范围中有一个有效的VCProject引用时,我在访问这个接口时遇到困难

public List<string> IncludeDirectories()
{
  List<string> includeDirs = new List<string>();

  // assume VCProj() returns a valid VCProject object
  VCProject proj = VCProj();
  VCDirectories dirs = proj.VCDirectories;

  return includeDirs;
}

您可能希望使用以下属性:

您可以获得VCPlatform,正如几年前我在本文的方法中所示:

您可以使用本文的方法获得VCCLCompilerTool:


太好了,谢谢。我发现了另一种解决方法,使用的是
VCProject.ActiveConfiguration.Rules.Item(“ConfigurationDirectories”)
,但这似乎要优雅得多。
public List<string> IncludeDirectories()
{
  List<string> includeDirs = new List<string>();

  // assume VCProj() returns a valid VCProject object
  VCProject proj = VCProj();
  VCPlatform pf = proj.ActiveConfiguration.Platform;
  string[] directories = pf.Evalualte(pf.IncludeDirectories).split(';');

  foreach(string dir in directories) {
    if(dir != "") {
      includeDirs.Add(dir);
    }
  }

  return includeDirs;
}