Visual studio 如何在visual studio中为解决方案动态创建解决方案文件夹?

Visual studio 如何在visual studio中为解决方案动态创建解决方案文件夹?,visual-studio,powershell,visual-studio-2017,solution,Visual Studio,Powershell,Visual Studio 2017,Solution,我想使用PowerShell脚本在Visual Studio中动态创建一个新的解决方案文件夹 我知道如何在Visual Studio中手动为现有解决方案创建解决方案文件夹,但我们是否可以使用PowerShell将其自动化?要添加解决方案文件夹,您应该添加项目条目。解决方案文件夹的项目类型的Guid应为:“{2150E333-8FDC-42A3-9474-1A3956D46DE8}”,对于项目Guid,应使用新的Guid 以下是将文件夹添加到解决方案文件的函数: Function AddFolde

我想使用PowerShell脚本在Visual Studio中动态创建一个新的解决方案文件夹

我知道如何在Visual Studio中手动为现有解决方案创建解决方案文件夹,但我们是否可以使用PowerShell将其自动化?

要添加解决方案文件夹,您应该添加
项目
条目。解决方案文件夹的项目类型的Guid应为:
“{2150E333-8FDC-42A3-9474-1A3956D46DE8}”
,对于项目Guid,应使用新的Guid

以下是将文件夹添加到解决方案文件的函数:

Function AddFolderToSolution($folderName, $solutionFile)
{
   $solutionFolderGuid = "{2150E333-8FDC-42A3-9474-1A3956D46DE8}"
   $content = [System.IO.File]::ReadLines($solutionFile)
   $lines = New-Object System.Collections.Generic.List[string]
   $lines.AddRange($content)
   $index = $lines.IndexOf("Global")
   $guid = [System.Guid]::NewGuid().ToString().ToUpper()
   $txt = "Project(`"$solutionFolderGuid`") = `"$folderName`", `"$folderName`", `"$guid`""
   $lines.Insert($index, $txt)
   $lines.Insert($index+1, "EndProject")
   [System.IO.File]::WriteAllLines($solutionFile, $lines)
}
下面是用法:

AddFolderToSolution "NewFolder10" "D:\Solution1.sln"

从哪里获取Guid?函数包含所有逻辑。就像我说的那样。解决方案文件夹项目类型的Guid为
“{2150E333-8FDC-42A3-9474-1A3956D46DE8}”
。文件夹本身的guid是一个新guid
[System.guid]::NewGuid().ToString().ToUpper()
。答案包含您不需要发现任何东西的所有必需信息。我在VS2017上尝试了它,它工作正常。我得到了以下错误:
异常调用带有“2”参数的“Insert”:“索引必须在列表的范围内。参数名称:Index”在第12行char:4+$lines。Insert($Index,$txt)+~~~~~~~~~~~~~~~~~~~~~~~~~~~+CategoryInfo:未指定:(:[]),MethodInvocationException+FullyQualifiedErrorId:ArgumentOutOfRangeException
我正在针对VS2017解决方案运行它,没有任何问题。进行一些调试,确保您拥有的解决方案文件是有效的,例如包含“全局”项。@ANIL解决方案文件夹不是真正的物理文件夹。您不需要创建文件夹。解决方案文件夹是一个逻辑文件夹,仅用于对可能位于任何位置的某些文件进行分类。