Как именно "Visual Studio Version Selector" выбирает версию VS?
Для таких расширений, как .sln
или .csproj
, по умолчанию используется Microsoft Visual Studio Version Selector. У меня установлены две версии: 2010 SP1 и 2012 RC. Как именно это приложение решит, какой VS запустить?
Я бы сказал, что он работает следующим образом:
- Если он находит какой-либо намек в данном файле, какая версия должна использоваться, то он его использует. Например, в верхней части файлов
.sln
есть что-то вроде этого, поэтому выбор версии может решить:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2010
- Если он не найдет подсказки, он будет использовать ту версию, которая была позже установлена (в моем случае я переустановил 2010 SP1 после того, как 2012 уже был установлен на моем ПК, и теперь я думаю, что VS2010 открывается чаще, чем 2012 год, но я не 100%).
Это мое чувство, но каковы точные правила?
Ответы
Ответ 1
В заголовке файла есть информация о версии. В противном случае проводник не сможет отобразить другой значок документа в файле .sln с номером:
![VS2008]()
![VS2010]()
![VS2012]()
![VS2013]()
![VS2015]()
![VS2017]()
, представляющий файлы .sln для версий VS 2008/2010/2012/2013/2015/2017/2019
Этот номер на значке исчезает, если вы редактируете файл .sln с помощью блокнота или другого текстового редактора, который не сохраняет подпись UTF-8 (см. Комментарий Пола Грока). В этом случае также селектор версий не может выбрать правильную версию, и вы не можете открыть ее из проводника. Вы можете специально открыть его из Visual Studio и сохранить файл .sln, чтобы исправить это. Также см. Это для получения дополнительной информации по этому вопросу.
Ответ 2
Файл .sln должен быть файлом UTF-8-BOM и должен начинаться так:
[blank line]
Microsoft Visual Studio Solution File, Format Version XX.XX[XXX...]
[description]
[description]
- это, например, # Visual Studio Express 2012 for Windows Desktop
для VS 2012 или # Visual Studio 15
для VS 2017.
Вторая строка чувствительна к регистру, а третья строка (description
) - нет. Если он отсутствует, кажется, селектор запускает последнюю версию VS.
Запись VisualStudioVersion
игнорируется.
Однако для отображения правильного значка файла [description]
должно быть точным и чувствительным к регистру.