2010-02-11 18 views
43

En Visual Studio 2008, ¿qué determina el orden en que los proyectos aparecen dentro de una carpeta de solución? No es orden alfabético, ni es orden de compilación.Orden de proyecto en Visual Studio Solution

No encuentro ninguna forma de alterar el orden en que se enumeran los proyectos. He intentado eliminar mi archivo .suo, así como mover cosas en el archivo .sln. Ninguno tuvo ningún efecto.

¿Cómo puedo cambiar el orden en que se muestran mis proyectos?

+2

Tengo una situación aún peor. De vez en cuando, VS 2008 decide volver a ordenar mis proyectos ... Es horrible, justo cuando solía "su orden", decide cambiar y en una solución con más de 100 proyectos, ¡es una pesadilla encontrar algo! – anthares

Respuesta

8

Hay una solicitud de comentarios ya realizada en Connect.Microsoft.com, por lo que tendrá que esperar la solución permanente.

http://connect.microsoft.com/VisualStudio/feedback/details/468874/solution-explorer-project-sort-order (reemplazado con Wayback Machine enlace como se eliminó el original)

soluciones temporales están disponibles pero no lo suficientemente bueno que siento. Uno de ellos es:

Prensa F2 cambiar el nombre de un proyecto, a continuación, pulse Intro sin cambiar el nombre. Esto ordena temporalmente los proyectos dentro de esa carpeta.

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

O utilice http://solutionsorter.codeplex.com/ para alterar GLC para solución permanente si sus carpetas de soluciones no están anidados (se comió mi solución)

Pero esto no va a funcionar si cierra y abre la solución.

Si utiliza ReSharper, puede pulsar el atajo CTRL +N para averiguar archivos en solución y CTRL +F12 a descubrir métodos en el archivo.

+0

AFAIK está fijado en VS2010, espero que no haya una solución permanente para VS2008. – Benjol

+1

Cualquier idea de cómo hacer esto en VS2010, no es obvio para mí ... –

+4

@Benjol define "fijo"? siempre ordenado alfabéticamente? – Lucas

4

alternativa Hacky: copie la sección con estas líneas en un archivo de texto.

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "etc..." 
EndProject 

Utilice esta F # script para ordenar alfabéticamente (cambio de ruta del archivo según sea necesario):

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 

(Si sólo tiene unos pocos proyectos, simplemente ordenar a mano)

7

Lleve el archivo .sln en cualquier editor de texto. Orden de las partes
" Proyecto (" {} 2150E333-8FDC-42A3-9474-1A3956D46DE8 ") = "etc ..."
...
EndProject

en el orden que desee. Guárdalo. Eso es todo. La próxima vez que abra esta solución, los proyectos estarán en ESE orden.

+0

Esto no tiene ningún efecto en VS2010 (la pregunta original era sobre VS2008, pero intenté esto en vano espero que funcione) –

10

Lamentablemente, VS2010 obliga a ordenar los proyectos por orden alfabético.

Tal vez cambiar el nombre de los proyectos agregando un prefijo numérico (01, 02, 03, etc.) para lograr el orden deseado es la única solución, aunque tampoco es ideal.

2

por esta solución: https://stackoverflow.com/a/21118705/835561

Puede utilizar carpetas solución para hacer su clasificación sin preocuparse de que afecte a las dependencias del proyecto. No estoy seguro de qué tan bien esto funcione antes de 2013, pero encontré esta pregunta buscando 2013 y pensé que esto podría ayudar a otros en mi situación.

Cuestiones relacionadas