![](/img/trans.png)
[英]Visual Studio Solution: Get projects related to a build configuration
[英]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.