如何以编程方式将现有项目添加到 Visual Studio 中的解决方案文件夹
How to programatically add an existing project to a solution folder in Visual Studio
我有一个解决方案,我想以编程方式将现有项目添加到其中。
使用 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 个项目需要数百次取消引用,因此需要自动化。
诀窍是将返回的项目添加到 SolutionFolder
(注意 .Object
)
var referencesFolder = (SolutionFolder) solution
.AddSolutionFolder("References")
.Object;
referencesFolder.AddFromFile(fullPathToCsProj);
这样可以访问正确添加项目的根实体上的 AddFromFile
我有一个解决方案,我想以编程方式将现有项目添加到其中。
使用 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 个项目需要数百次取消引用,因此需要自动化。
诀窍是将返回的项目添加到 SolutionFolder
(注意 .Object
)
var referencesFolder = (SolutionFolder) solution
.AddSolutionFolder("References")
.Object;
referencesFolder.AddFromFile(fullPathToCsProj);
这样可以访问正确添加项目的根实体上的 AddFromFile