当我在一个应用程序中使用同一解决方案(VS2019)处理具有多个项目的应用程序时,为了保持资源,我经常根据正在处理的项目来卸载或加载不同的项目。这就是为什么我要创建一个插件,该插件将允许保存已加载和已卸载项目的某些配置。现在,我可以轻松地在当前DTE中卸载项目,例如:
IVsSolution solution = (IVsSolution)sp.GetService(typeof(SVsSolution));
IVsSolution4 solution4 = (IVsSolution4)sp.GetService(typeof(SVsSolution));
// Close all projects
foreach (Project project in projectsFromDTE)
{
IVsHierarchy hierarchy;
solution.GetProjectOfUniqueName(project.UniqueName, out hierarchy);
Guid guidProjectID;
solution.GetGuidOfProject(hierarchy, out guidProjectID);
solution4.UnloadProject(guidProjectID, (uint)_VSProjectUnloadStatus.UNLOADSTATUS_UnloadedByUser);
}
但是我不知道如何加载这些项目。我找到了此文档:https://docs.microsoft.com/en-us/visualstudio/extensibility/managing-project-loading-in-a-solution?view=vs-2019知道如何使用它吗?
NB:对错或语法错误感到抱歉,英语不是我的母语。
我终于成功地做到了,通过使用这个:
IVsHierarchy hierarchy;
solution.GetProjectOfUniqueName(projectFileName, out hierarchy);
Guid guidProjectID;
solution.GetGuidOfProject(hierarchy, out guidProjectID);
solution4.ReloadProject(guidProjectID);
其中projectFileName是.csproj的路径。