以编程方式从解决方案中删除项目

本文关键字:删除项目 解决方案 编程 方式 | 更新日期: 2023-09-27 17:49:27

我需要从一个非常大的解决方案中排除一些有bug的项目,用这个脚本做一个自动构建。

我试图编辑构建配置以排除这些项目,并且我也试图从解决方案中卸载它们,但我发现使用我的脚本获得成功构建的唯一方法是从解决方案中删除这些项目。

我需要用程序来做。

所以我谷歌了一下,我找到了这个答案,但是现在这个特定的库已经分成了4部分:

  • EnvDTE
  • EnvDTE80
  • EnvDTE90
  • EnvDTE100

,我甚至不知道如何使用新的DTE, msdn上没有有用的文档(像往常一样)

我的代码是

System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.11.0");
Object obj = System.Activator.CreateInstance(type, true);
EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)obj;
dte.Solution.Open(SlnPath);

,但它永远卡住在。open上(我使用EnvDTE80,因为EnvDTE100没有。dte2)

我也试过

Type latestSolution = Type.GetTypeFromProgID("VisualStudio.DTE.11.0", true);
EnvDTE100.Solution4 sln = (EnvDTE100.Solution4)Activator.CreateInstance(latestSolution, true);
sln.Open(SlnPath);
但是在第二行我得到了
Unable to cast COM object of type 'System.__ComObject' to interface type 'EnvDTE100.Solution4'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{CDA7305C-78B6-4D9D-90AD-93EBE71F9341}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

任何建议吗?谢谢所有的

以编程方式从解决方案中删除项目

查看这个项目:https://slntools.codeplex.com/

var sln = SolutionFile.FromFile(solutionFullPath);
var projList = sln.Projects;
var proj = sln.Projects.FindByFullName("ProjNameToRemove");
sln.Projects.Remove(proj);
sln.Save(); // or .SaveAs("NewName.sln");