Visual Studio解决方案中的项目顺序

61

在Visual Studio 2008中,决定解决方案文件夹中项目出现顺序的是什么?它不是按字母顺序排列,也不是构建顺序。

我找不到任何改变项目列表顺序的方法。我尝试删除我的.suo文件,以及在.sln文件中移动项目位置,但两者都没有任何影响。

我该如何改变项目显示顺序?


6
我情况更糟。时不时地,VS 2008会重新排列我的项目……这很可怕,就在我习惯了“它的顺序”之后,它又决定改变,在一个有100多个项目的解决方案中,找任何东西都是噩梦! - anthares
6个回答

13

已经在Connect.Microsoft.com上放置了反馈请求,因此您需要等待永久解决方案。

http://connect.microsoft.com/VisualStudio/feedback/details/468874/solution-explorer-project-sort-order(原始链接已被删除,现更换为Wayback Machine链接)

临时解决方法可用,但我认为并不够好。其中一个方法是:

F2 重命名项目,然后按 Enter ,不要更改名称。这将暂时对文件夹中的项目进行排序。

(根据http://social.msdn.microsoft.com/Forums/en-US/vssetup/thread/79d46a69-386e-4ad8-b9cb-b00d4252495b/?prof=required)

或使用http://solutionsorter.codeplex.com/来修改SLN以进行永久修复,如果您的解决方案文件夹没有嵌套(它破坏了我的解决方案)

但是,如果您关闭并重新打开解决方案,则此方法将无效。

如果您使用Resharper,可以按下快捷键CTRL+N查找解决方案中的文件,CTRL+F12查找文件中的方法。


据我所知,这个问题在VS2010中已经得到解决,我预计在VS2008中不会有永久性的解决方案。 - Benjol
4
“fixed” 的意思是固定的吗?总是按字母顺序排序吗? - Lucas

12

很遗憾,VS2010强制要求项目按字母顺序排序。

也许将项目重命名并添加数字前缀(01、02、03等)以实现所需的顺序是唯一的解决方法,虽然这也不是理想的解决方案。


7

在任何文本编辑器中打开 .sln 文件。

按照您想要的任何顺序排列项目部分:
"Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "等等..."
...
EndProject

保存文件。 就是这样。 下次打开此解决方案时,项目将以该顺序显示。


2
这在VS2010中没有任何影响(原问题是关于VS2008的,但我刚刚尝试了一下,徒劳无功)。 - Warren Stevens

4
巧妙的替代方法:将包含这些行的部分复制到文本文件中。
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "etc..."
EndProject

请使用此 F# 脚本按字母顺序对其进行排序(根据需要更改文件路径):
open System.IO

let readlines p = File.ReadAllLines(p)
let writelines p lines = File.WriteAllLines(p, lines)

let startpos = @"Project(""{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"") = """.Length
let getProj (s:string) = s.Substring(startpos, s.IndexOf('"', startpos) - startpos)

let path = @"C:\Temp\sln.txt"
path |> readlines
    |> Array.filter (fun s -> s.StartsWith("Project"))
    |> Array.map (fun s -> (getProj(s), s))
    |> Array.sortBy fst
    |> Array.map snd
    |> Array.collect (fun s -> [|s;"EndProject"|])
    |> writelines path

如果您只有几个项目,可以手动排序。

2
根据这个解决方案:https://dev59.com/ZHDXa4cB1Zd3GeqP-1BI#21118705 使用“解决方案文件夹”进行排序,无需担心会影响项目依赖关系。不确定在2013年之前是否工作得很好,但我遇到了这个问题,并想到这可能会帮助其他人。

0

dotnet sln add 命令可以为解决方案中的所有文件夹中的所有项目重新排序。

只需使用以下命令之一将至少一个项目添加到您的解决方案中:

dotnet sln $Solution add --solution-folder $SolutionFolder $projectPath

或者没有解决方案文件夹:

dotnet sln $Solution add --in-root $projectPath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接