ソリューションで選択されたプロジェクトを取得し、それに依存するすべてのプロジェクトをアンロードする VS 用のアドインを作成したいと思います。出来ますか?
マクロで作る可能性はあると思いますが、アドインで作りたいです。
これが解決策です
private const string UnloadProjectCommandName = "Project.UnloadProject";
private const string ReloadProjectCommandName = "Project.ReloadProject";
public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)
{
handled = false;
if (executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
{
if (commandName == "Build7.Connect.Build7")
{
handled = true;
var solution = (((SolutionClass)(_applicationObject.Solution)));
var solutionExplorer = _applicationObject.Windows.Item(Constants.vsWindowKindSolutionExplorer);
solutionExplorer.Activate();
var solutionHierarchy = (UIHierarchy)solutionExplorer.Object;
string solutionName = solution.Properties.Item("Name").Value.ToString();
var projects = solution.Projects;
foreach (Project project in projects)
{
var projPath = solutionName + "\\" + project.Name;
var obj = solutionHierarchy.GetItem(projPath);
obj.Select(vsUISelectionType.vsUISelectionTypeSelect);
_applicationObject.ExecuteCommand(UnloadProjectCommandName);
}
foreach (Project project in projects)
{
var projPath = solutionName + "\\" + project.Name;
var obj = solutionHierarchy.GetItem(projPath);
obj.Select(vsUISelectionType.vsUISelectionTypeSelect);
_applicationObject.ExecuteCommand(ReloadProjectCommandName);
}
}
}
}