繁体   English   中英

如何在活动的Visual Studio配置中构建项目?

[英]How do I get the projects to build in the active Visual Studio configuration?

我正在开发一个小型Visual Studio扩展,它基于是否设置为在活动构建配置中构建,基于解决方案中的项目。 我遇到的问题是我无法弄清楚如何确定这些项目是什么。

我已经实现了IVsUpdateSolutionEvents ,我实现了OnActiveProjectCfgChange 当我更改配置时,我可以让Visual Studio进入代码块,并且我已经能够让它做我想做的许多事情,但是无法确定应该在活动中构建哪些项目配置,我死在水里。

到目前为止,我的实施是:

public int OnActiveProjectCfgChange(IVsHierarchy pIVsHierarchy)
{

    var activeProjects = new HashSet<string>(); // TODO: Get projects in active configuration
    foreach (Project project in _dte.Solution.Projects)
    {
        if (project.Kind != "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" // C#
            && project.Kind != "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}" // VB
            && project.Kind != "{13B7A3EE-4614-11D3-9BC7-00C04F79DE25}" // VSA
           )
            continue;

        IVsHierarchy projectHierarchy;
        _solutionService.GetProjectOfUniqueName(project.UniqueName, out projectHierarchy);
        if (activeProjects.Contains(project.UniqueName))
        {
            // Project is to be built
        }
        else
        {
            // Project is not to be built
        }

        return VSConstants.S_OK;
    }
}

我需要做的是弄清楚如何在函数开头填写HashSet (标有TODO )。 我搜索和搜索过,但我还没找到我需要的东西。

有没有人提到可能有助于我前进的文档或示例代码?

您可以使用SolutionContext.ShouldBuild属性

 foreach (SolutionContext solutionContext in _applicationObject.Solution.SolutionBuild.ActiveConfiguration.SolutionContexts)
 {
     if (solutionContext.ShouldBuild)
      activeProjects.Add(solutionContext.ProjectName);
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM