如何以编程方式将现有项目添加到Visual Studio中的解决方案文件夹

时间:2019-02-21 04:45:23

标签: visual-studio envdte

我有一个解决方案,希望以编程方式将现有项目添加到其中。

使用envdte自动化打开解决方案相对容易

        var envDteType = Type.GetTypeFromProgID("VisualStudio.DTE.15.0");

        var envDte = Activator.CreateInstance(envDteType, true);
        var dte2 = (DTE2)envDte;

        var solution = (Solution4)dte2.Solution;
        solution.Open(filename);

但是不能将现有项目添加到解决方案文件夹中。

请注意,这不是使用大多数google结果提供的模板

使用

var referencesFolder = solution.AddSolutionFolder("References");
referencesFolder.ProjectItems.AddFromFile(fullPathToCsProj);

将项目文件添加为普通的旧文件,而不是CSharp项目。

用例是我们正在库管理的nuget更新中,将取消引用nuget并添加直接的项目引用。大约有55个项目需要数百次取消引用,因此是自动化的。

1 个答案:

答案 0 :(得分:0)

技巧是将返回的项目添加到SolutionFolder(请注意.Object

var referencesFolder = (SolutionFolder) solution
                                  .AddSolutionFolder("References")
                                  .Object;

referencesFolder.AddFromFile(fullPathToCsProj);

这可以访问根实体上的AddFromFile,从而正确添加了项目