¿Por qué la opción "Establecer como inicio" se almacena en el archivo suo y no en el archivo sln?

175

Parece que esta configuración debería almacenarse en el archivo de solución para que se comparta con todos los usuarios y sea parte del control del código fuente. Como no registramos el archivo suo, cada usuario debe configurarlo por separado, lo que parece extraño.

leora
fuente

Respuestas:

46

¿Por qué debería ser una preferencia no específica del usuario?

Si tengo una solución con 10 archivos y un desarrollador está probando / usando principalmente una de esas herramientas, ¿por qué debería afectar eso lo que inicio?

Creo que MS tomó la decisión correcta en este caso. El proyecto que quiero comenzar está lejos de ser necesariamente el proyecto que otros desarrolladores quieren comenzar.

Jon Skeet
fuente
133
Con frecuencia, tendrá un proyecto que es muy probable que sea el proyecto de inicio deseado por la mayoría de las personas para la depuración (por ejemplo, el sitio web), y no desea una biblioteca de clase como proyecto de inicio. No veo por qué MS no pudo proporcionar un mecanismo adecuado (no lo que parece un truco, es decir, poner el predeterminado en la parte superior del archivo .sln) para configurar un proyecto de inicio predeterminado global y luego permitir un. suo para anularlo si lo desea.
Jez
27
Hay una manera de hablar ... Mueva el proyecto que desea establecer como proyecto de inicio predeterminado para que sea el primer proyecto en el archivo sln. Elimine su archivo suo, vuelva a abrir la solución y woila, ese primer proyecto debería ser el inicio. Puede haber otros factores que contribuyen a esto, pero lo descubrí cuando noté que un proyecto en particular seguía incumpliendo cuando revisé un proyecto limpio desde el control de origen.
misteraidan
2
Este es un problema cuando se usa un servidor de compilación porque requeriría verificar el suo en el control de versiones para establecer el proyecto de inicio correcto y verificar el suo en el control de versiones es una mala idea.
markshancock
2
@markshancock: ¿Por qué un servidor de compilación se preocuparía por el proyecto de inicio? Nunca he visto eso como un problema.
Jon Skeet
18
Lo siento, Jon, pero te voy a dar un -1 aquí. Creo que los desarrolladores deben tener la capacidad de descargar código y luego presionar F5, esperando que la configuración de desarrollo más habitual se desarrolle y comience. Por supuesto, debe tener la capacidad de personalizar sus startups para circunstancias personales, pero deberíamos poder establecer un valor predeterminado para la mayoría de los usuarios, como se indicó anteriormente. La respuesta de Oliver parece ir de alguna manera para hacer eso, aunque parece que múltiples proyectos iniciales seguirán siendo imposibles de verificar en el control de fuente, lo cual es una pena.
Stephen Holt
376

Es absolutamente necesario que todos puedan definir su Proyecto StartUp por sí mismos, como ya dijo Jon . Pero tener uno predeterminado dedicado sería genial, y como puedo decir, ¡es posible!

Si no tiene un archivo .suo en su directorio de soluciones, Visual Studio elige el primer proyecto en su archivo .sln como el proyecto de inicio predeterminado.

  1. Cierre su Visual Studio y abra el archivo .sln en su editor de texto favorito. A partir de la línea 4, que se ve todos sus proyectos encapsulados en Project- EndProjectlíneas.

  2. Corte y pegue el proyecto de inicio predeterminado deseado en la posición superior.

  3. Elimina tu archivo .suo.

  4. Abra su solución en Visual Studio. Ta daa!

¿Hay un premio especial si sabes algo que Jon no sabe? ;-)

Oliver
fuente
1
Por fin! ¡Esto me ha estado molestando durante mucho tiempo, pero ya no! Tkanks :)
mdonatas
44
Parece funcionar solo si no está en una carpeta de soluciones: quiero decir, este truco funciona para proyectos raíz, desde mi experiencia con algunas soluciones que tengo.
jdehaan
25
¡GUAUU! ¡Has matado a Jon! :))
Andrei Rînea
3
¿Qué sucede si hay dos proyectos predeterminados? ¿Cómo puedo iniciarlos por defecto?
Amy B
66
@Oliver: haga clic con el botón derecho en Solución -> Establecer proyectos de inicio ... -> Múltiples proyectos de inicio. Un clic comienza múltiple.
Anton
46

En la mayoría de los casos, tiene sentido tener un valor predeterminado en esto.

Sería mucho mejor acomodar un proyecto de inicio predeterminado y almacenarlo en el archivo .sln, pero un desarrollador puede anularlo en su archivo .suo. Si la configuración de inicio no se encuentra en el archivo .suo, se utilizará el proyecto de inicio predeterminado en .sln.

En realidad, esto se ha sugerido en UserVoice de Visual Studio .

Wim Hollebrandse
fuente
El UserVoice vinculado está "cerrado para votar" pero no se comenta por qué.
yzorg
Esta es definitivamente la mejor postura en comparación con la respuesta aceptada. No trabajé una vez dentro de un equipo que considerara una ventaja establecer esto por usuario. Simplemente conduce a una configuración adicional en clones nuevos, etc.
Trevor Reid
3

Escribí una pequeña utilidad de línea de comandos para Windows llamada slnStartupProjectpara configurar el Proyecto de inicio automáticamente:

slnStartupProject slnFilename projectName

Personalmente lo uso para configurar el proyecto de inicio después de generar la solución con cmake que siempre establece un ALL_BUILDproyecto ficticio como el primer proyecto en la solución.

La fuente está en GitHub. Tenedores y comentarios son bienvenidos.

michaK
fuente
¡Gracias por esto! Estaba teniendo exactamente este problema con cmake y su utilidad funciona muy bien.
sippa
1
¡De nada! Feliz, ayuda, ya que me ha estado molestando durante años antes de que decidiera resolver eso definitivamente. Realmente no entiendo por qué las personas tienen peleas filosóficas sobre esto, mientras que es claramente útil en la mayoría de los casos.
michaK
Tú ... espera ... ¿qué? - Generas tu archivo .sln manualmente? ... ¿que brujería es esta?
BrainSlugs83
3

Si está utilizando GIT, puede confirmar el archivo SUO predeterminado y luego marcarlo como sin cambios utilizando

git update-index --assume-unchanged YourSolution.suo

Funciona también si desea tener más de un proyecto en su grupo de inicio predeterminado. La única desventaja que conozco es que este comando debe ser ejecutado por todos los que no desean comprometer el archivo SUO.

sebetovsky
fuente