3
我正在研究一個小型的Visual Studio擴展,該擴展對基於解決方案的項目起作用,如果它們設置爲在活動構建配置中構建或不構建。我遇到的問題是我無法弄清楚如何確定這些項目是什麼。如何獲取要在活動的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
)。我已經搜索和搜索,但我沒有找到我需要的。
有沒有人提及可能會幫助我前進的文檔或示例代碼?
這主要作品!嘗試檢查卸載項目的狀態時出現ArgumentException,但我可以解決此問題。謝謝! – 2012-03-20 19:20:19