1

ソリューションで選択されたプロジェクトを取得し、それに依存するすべてのプロジェクトをアンロードする VS 用のアドインを作成したいと思います。出来ますか?

マクロで作る可能性はあると思いますが、アドインで作りたいです。

4

1 に答える 1

1

これが解決策です

    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);

                }
            }
        }
    }

ジェレミー・ジェイムソンの投稿に感謝

于 2013-04-08T10:14:05.240 に答える