- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的工作室扩展中添加两个按钮,用于卸载/加载开放式解决方案的所有测试项目。经过很多麻烦之后,卸载工作正常。现在我仍然无法加载它们。
不知何故,我无法弄清楚如何正确使用 IVsSolution.CreateProject() 并且我没有找到任何示例。这是我到目前为止所拥有的,它总是返回我 VS_E_PROJECTALREADYEXISTS:
internal sealed class ProjInfo
{
public ProjInfo(Guid guid, string name, string uniqueName)
{
Guid = guid;
Name = name;
UniqueName = uniqueName;
}
public Guid Guid { get; private set; }
public string Name { get; private set; }
public string UniqueName { get; private set; }
}
//....
private static void LoadProject(ProjInfo project, IVsSolution solutionService)
{
IVsHierarchy selectedHierarchy;
string solPath;
string solFileName;
string opstName;
solutionService.GetSolutionInfo(out solPath, out solFileName, out opstName);
string projRef;
solutionService.GetProjectOfGuid(project.Guid, out selectedHierarchy);
solutionService.GetProjrefOfProject(selectedHierarchy, out projRef);
Guid projectType;
IntPtr proj;
solutionService.GetProjectTypeGuid(0, project.UniqueName, out projectType);
projectType = Guid.Empty;
var iidProject = Guid.Empty; //project.Guid;
int res = VSConstants.S_OK;
if (ErrorHandler.Failed(res = solutionService.CreateProject(ref projectType, solPath + project.UniqueName, null, null, (uint)__VSCREATEPROJFLAGS.CPF_OPENFILE, ref iidProject, out proj)))
{
Debug.Fail(String.Format("IVsolution::CreateProject retuend 0x{0:X}.", res));
}
}
我尝试使用更多创建标志(__VSCREATEPROJFLAGS.CPF_OVERWRITE、__VSCREATEPROJFLAGS.CPF_SILENT)的任意组合,并且没有将引用 projectType 和 iidProject 设置为 Guid.Emtpy。没有任何效果,我总是得到结果 VS_E_PROJECTALREADYEXISTS。
知道如何实现我在上下文菜单上以编程方式卸载/重新加载项目的功能吗?也许是一种完全不同的方法?非常感谢
最佳答案
使用自动化模型 (EnvDTE),您可以从包中获取 EnvDTE.DTE 服务,并假设在解决方案资源管理器调用 dte.ExecuteCommand("Project.ReloadProject") 中选择卸载的项目节点;
或者,尝试 IVsSolution4.ReloadProject
我创建了两篇文章/示例:
关于c# - 如何使用 IVsSolution.CreateProject 以编程方式重新加载现有的已卸载的 c# 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29700319/
我有一个 VS 包项目,我需要从加载的 IVsSolution 访问 Roslyn 或 Microsoft.CodeAnalysis 的工作区或解决方案对象. 我需要知道如何实现这一目标? 我找到了t
我想在我的工作室扩展中添加两个按钮,用于卸载/加载开放式解决方案的所有测试项目。经过很多麻烦之后,卸载工作正常。现在我仍然无法加载它们。 不知何故,我无法弄清楚如何正确使用 IVsSolution.C
我是一名优秀的程序员,十分优秀!