2012-06-14 28 views
20

Para extensiones como .sln o .csproj la aplicación predeterminada es Microsoft Visual Studio Selector de versiones. Tengo dos versiones instaladas, 2010 SP1 y 2012 RC. ¿Cómo exactamente esta aplicación decidirá qué VS lanzar?¿Cómo exactamente "Selector de versión de Visual Studio" elige una versión de VS?

diría que funciona de esta manera:

  • Si encuentra alguna pista en el archivo determinado qué versión se debe utilizar, a continuación, se utiliza la misma. Por ejemplo, en la parte superior de .sln archivos hay algo como esto para que el Selector de versión puede decidir:

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

  • Si no encuentra ningún indicio que utilizará la versión que fue instalado más tarde (en mi caso reinstalé 2010 SP1 después de que 2012 ya estaba instalado en mi PC y ahora creo que VS2010 se abre con más frecuencia que en 2012 pero no estoy 100% seguro).

Esta es mi sensación, pero ¿cuáles son las reglas exactas?

+2

No documentado. Pero puedes asumir que usa el número de versión en el archivo. –

+0

@HansPassant: también lo adivino. – Luciano

Respuesta

26

Hay información de alguna versión en el encabezado del archivo. De lo contrario, no sería posible para el explorador de archivos para mostrar diferentes icono de documento en el archivo .sln con un número:

VS2008VS2010VS2012VS2013VS2015VS2017 representación de archivos para las versiones .sln VS 2008/2010/2012/2013/2015/2017

Este número en el icono desaparece si edita el archivo .sln con el bloc de notas o cualquier otro editor de texto que no conserva la firma UTF-8 (ver comment by Paul Groke). En este caso, también el selector de versión no puede elegir la versión correcta, y no puede abrirla desde el explorador de archivos. Puede abrirlo específicamente desde Visual Studio y guardar el archivo .sln para solucionarlo. También vea this para más sobre este tema.

+5

Puede editar archivos .sln con un editor de texto que conserve la firma UTF-8 (también conocida incorrectamente como "marca de orden de bytes"). Si la firma UTF-8 no está presente, el selector de versión ignorará el contenido del archivo y solo usará la última versión para abrirlo. Acabo de probar esto en uno de nuestros archivos .sln "rotos", funciona como un encanto. Se abrió en Notepad2, se volvió a guardar en formato "firma UTF-8" => funciona de nuevo. No es necesario volver a guardar con VS. Ver respuesta aceptada a http://stackoverflow.com/questions/2804759/vslauncher-starts-wrong-version –

+1

@PaulGroke - La 'marca de orden byte' (BOM) es el nombre propio de la' firma UTF-8'. Simplemente ocurre que solo hay un orden de bytes para UTF-8. Pero UTF-16 tiene pedidos de 2 bytes. Consulte: https://en.wikipedia.org/wiki/Byte_order_mark –

+0

@awe - No se olvide de guardar el archivo con 'CRLF' (terminaciones de línea estilo Windows) no solo' LF' (terminaciones de línea estilo Unix). –

Cuestiones relacionadas