¿Cómo forzar la apertura de un archivo de solución (SLN) en Visual Studio 2013?

102

Intentar abrir una solución VS 2012 (archivo SLN) explícitamente en VS 2013 tiene éxito. Simplemente, hacer doble clic en él en el Explorador de Windows aún lo abre en VS 2012.

Leí "¿ Visual Studio 2012 no convierte la solución vs2010? " Y seguí la sugerencia de "Guardar como ..." el archivo de la solución .

Aún se abre en VS 2012 de forma predeterminada.

Mi pregunta:

¿Cómo cambiar un archivo SLN para forzar su apertura en Visual Studio 2013?

Uwe Keim
fuente

Respuestas:

123

El .slnarchivo indica la versión prevista como una de las primeras líneas, por ejemplo:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013

o:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012

Sin embargo, solo puede hacer uso de esto si la aplicación predeterminada para .slnarchivos es el "Selector de versiones de Microsoft Visual Studio". No es raro que la .slnaplicación predeterminada sea ​​una versión específica . En Windows 8:

ingrese la descripción de la imagen aquí

puedes saber cuál es el predeterminado porque dice "seguir usando":

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Marc Gravell
fuente
2
@UweKeim hmmm; esa no es mi experiencia; con el selector de versión como predeterminado, para mí, la versión correcta de devenv se carga por archivo sln: ¿es posible que haya cargado esas soluciones en VS2013 en algún momento? que los mejorará
Marc Gravell
2
Bueno, tu sugerencia me es más que suficiente. Me encantan los íconos de carpeta ahora amarillos, en comparación con los oscuros en VS 2012.
Uwe Keim
2
@UweKeim si miras en el archivo sln, la segunda línea le dice con qué IDE abrir: # Visual Studio 2013vs# Visual Studio 2012
Marc Gravell
1
@UweKeim Me imagino que tiene un respaldo de "si no reconozco el valor, o si el IDE no está instalado, use el IDE más reciente instalado"
Marc Gravell
6
para mí, el lanzador predeterminado ya estaba configurado en "Selector de versiones de Microsoft Visual Studio", pero estaba lanzando soluciones creadas en Visual Studio 2013 en el 2012 ide !!. Pero volver a aplicar el "Selector de versiones de Microsoft Visual Studio" como predeterminado lo solucionó. Ahora 2012 abre en 2012 ide y 2013 abre en 2013 ide. (Estoy usando Windows 7 de 64 bits)
Peter Flannery
35

Tenga en cuenta que también puede forzar la actualización de un archivo .sln o .proj mediante la línea de comandos, donde devenv es la versión del IDE de destino:

devenv "MyProject.sln" /upgrade

Ejemplo:

"%programfiles(x86)%\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" "D:\Source\MySolution.sln" /upgrade

Tenga en cuenta que esto no abre Visual Studio. Una alternativa es, desde el IDE, seleccionar "Guardar como" para el archivo de la solución y sobrescribir o guardar la solución con un nuevo nombre.

Leer más: http://msdn.microsoft.com/en-us/library/w15a82ay.aspx

zumey
fuente
1
ESTO porque es programable y no pirateado.
CAD bloke
2
Lamentablemente, esta técnica no siempre actualiza el archivo de la solución.
Theophilus
Después de devenv "MyProject.sln" /upgrade, también debe editar el archivo .sln, verifique ans de @ Zac.
Wei Guo
22

Parece que el OP ya tiene una respuesta funcional ... pero para mí el problema era diferente. Tenía una solución VS 2012 (varias en realidad) y quería convertirlas a 2013 (que entiendo es un cambio trivial en el archivo .sln, pero quería que se hiciera automáticamente en caso de que hubiera alguna lógica de actualización secreta que no conocía) .

Entonces pensé que lo abriría en VS2013, se actualizaría automáticamente como se esperaba, y luego estaría configurado para hacer doble clic en la solución y verla en VS2013 en el futuro. Pero abrir en VS2013 NO estaba actualizando la solución para mí automáticamente como se esperaba y no pude encontrar una forma explícita de forzar la actualización después de abrir el archivo en VS2013. Podría trabajar con la solución, guardar mis cambios y cerrar VS2013, pero el .sln permanecería sin cambios y sin actualizar.

Resulta que mi problema estaba en cómo estaba abriendo la solución ... como un hábito, hago clic derecho en los archivos y selecciono "abrir con" para elegir el programa que quiero usar para abrir un archivo. Hago esto con frecuencia. Tenga en cuenta que NO estoy hablando de cambiar el programa predeterminado "abrir con", sino de abrir un archivo con un programa específico una vez. Entonces haría clic derecho en el archivo .sln ... abrir con Visual Studio 2013 ... y nada se actualizaría.

Eventualmente pensé en ir a VS2013, luego hacer Archivo> Abrir y seleccionar el archivo .sln (esto es extraño para mí ya que casi nunca abro nada de esta manera, tal vez tú eres de la misma manera). De todos modos, eso actualizó el archivo de la solución al instante.

Después de la actualización, las líneas 2-3 del archivo .sln cambiaron de esto:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012

a esto:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30501.0
MinimumVisualStudioVersion = 10.0.40219.1

Entonces, según mi experiencia, para actualizar automáticamente un .sln VS2012 a VS2013, debe abrir VS2013 y seleccionar el .sln en el cuadro de diálogo Archivo> Abrir. El uso del shell del explorador para forzar la apertura del archivo .sln en VS2013 no invoca la lógica de actualización (aparentemente).

Como nota adicional, probé con otra solución, y después de realizar cambios a través de Configuration Manager (que obviamente "toca" el archivo .sln) actualizó un VS2012 a VS2013, incluso después de haberlo abierto haciendo clic con el botón derecho en abrir con.

TCC
fuente
1
Esto es exactamente lo que estaba tratando de hacer. Tengo la Actualización 3 y un proyecto se actualizó automáticamente, pero el otro solo cambiaría cuando abrí el Administrador de configuración. ¡Gracias por los consejos!
Erica
2
Incluso abrí un vs 2012 .sln desde dentro de VS 2013, pero para mí NO se actualizó. Extraño.
PositiveGuy
4
No es la apertura de la solución en VS 2013 lo que desencadena la actualización, es una acción que modifica la solución, como cambiar una configuración en la configuración activa.
balido
Lo intenté para actualizar de vs2013 a vs2015 y funciona.
Dingxin Xu
7

Tenía una solución que se había actualizado anteriormente de 2010 a 2013 con éxito, pero aún mostraba el .sln asociado con 2010.

Probé todos los métodos dados en este hilo y el único que corrigió exitosamente el .sln fue abrir Visual Studio 2013 solo, luego abrir la solución que todavía estaba asociada con 2010 en el IDE, luego usar [Archivo]> [Guardar (nombre) .sln como] para sobrescribir el archivo .sln existente.

Configurar la asociación de archivos de .sln para que sea el "selector de versión de Visual Studio" no hizo ningún cambio y la solución continuó abriéndose en 2010.

El método devenv (name) .sln / upgrade no modificó mi archivo .sln.

Hackear el texto sin formato del archivo .sln corrompió el mío y no se abrió en absoluto.

Jeff
fuente
Saludos Jeff, acabo de encontrarme en la misma situación que tú. Debo decir, aunque es bueno que Microsoft haya decidido que VS 2013 no intenta actualizar todo lo que toca, ¡a diferencia de las versiones anteriores de VS! Por lo general, es al revés, y estoy tratando de evitar que mis diferentes IDE de VS actualicen los archivos .proj y .sln de los demás :)
Simon Brangwin
@SimonBrangwin, que es una mejora, excepto que si llama explícitamente con / actualizar según las otras respuestas, ¡esperaría que realmente realizara la actualización solicitada!
Stannius
Jeff gracias! Esta es la única forma que pude encontrar para actualizar mi sln VS 2013 para que se abra de forma predeterminada con 2015.También tuve que abrir el explorador de soluciones y seleccionar manualmente el nodo de la solución en la parte superior del árbol del explorador para ver el 'Guardar (nombre ) .sln como 'opción en el menú Archivo.
ToastyMallows
6

Para resolver este problema, acabo de cambiar las siguientes líneas del archivo .sln:

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010

en estos:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013

La línea de comentario debe cambiarse a medida que la analiza el cargador de soluciones.

Zac
fuente
4

Esto puede funcionar para los lectores que intentan actualizar un archivo de solución a Visual Studio 2015 (actualicé una solución VS 2012).

  1. Abra la solución en VS 2015.
  2. Agregue un nuevo proyecto a la solución. (Agregué un proyecto de prueba).
  3. Quita el proyecto.
  4. Guarde la solución.

Es posible que desee eliminar la carpeta del proyecto eliminada en este momento, ya que el paso 3 no la eliminó.

Esto funcionó para mí cuando ni las respuestas de Zumey ni de TCC lo hicieron.

EDITAR

Metro Smurf tenía una respuesta similar, pero más fácil que la mía, para una pregunta similar . Sus pasos fueron:

  1. Solución abierta en VS 2015
  2. Solución de clic derecho> Agregar> Nueva carpeta de solución (el nombre no importa)
  3. Guardar solución
  4. Eliminar la carpeta de la solución recién agregada
  5. Guardar solución
Teófilo
fuente
Simplemente cambié el nombre de un proyecto y lo revertí después. De esta manera no se crea ninguna carpeta
Andy