无法在 VSIX 中动态加载项目
Cannot load dynamically a project in VSIX
当我在同一解决方案 (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
知道如何使用它吗?
注意:对于拼写错误或语法错误,我深表歉意,英语不是我的母语。
我终于成功了,用这个:
IVsHierarchy hierarchy;
solution.GetProjectOfUniqueName(projectFileName, out hierarchy);
Guid guidProjectID;
solution.GetGuidOfProject(hierarchy, out guidProjectID);
solution4.ReloadProject(guidProjectID);
其中 projectFileName 是 .csproj 的路径。
当我在同一解决方案 (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 知道如何使用它吗?
注意:对于拼写错误或语法错误,我深表歉意,英语不是我的母语。
我终于成功了,用这个:
IVsHierarchy hierarchy;
solution.GetProjectOfUniqueName(projectFileName, out hierarchy);
Guid guidProjectID;
solution.GetGuidOfProject(hierarchy, out guidProjectID);
solution4.ReloadProject(guidProjectID);
其中 projectFileName 是 .csproj 的路径。