Подтвердить что ты не робот

Как именно "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%).

Это мое чувство, но каковы точные правила?

4b9b3361

Ответ 1

В заголовке файла есть информация о версии. В противном случае проводник не сможет отобразить другой значок документа в файле .sln с номером:

VS2008VS2010VS2012VS2013VS2015VS2017VS2019, представляющий файлы .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] должно быть точным и чувствительным к регистру.