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

问题描述 投票:0回答:1

我有一个解决方案,我想以编程方式添加现有项目。

使用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);

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

请注意,这不是使用大多数谷歌搜索结果给出的模板

运用

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

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

用例是我们在图书馆管理中使用nuget更新地狱,并将取消引用nuget并添加直接项目参考。大约有55个项目需要数百个解引用因此自动化。

visual-studio envdte
1个回答
0
投票

诀窍是将返回的项目添加到SolutionFolder(注意.Object

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

referencesFolder.AddFromFile(fullPathToCsProj);

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

© www.soinside.com 2019 - 2024. All rights reserved.