Как принудительно открыть файл решения (SLN) в Visual Studio 2013?

102

Попытка явно открыть решение VS 2012 (файл SLN) в VS 2013 завершается успешно. Если просто дважды щелкнуть его в проводнике Windows, он по-прежнему откроется в VS 2012.

Я прочитал « Visual Studio 2012 не конвертирует решение vs2010? » И последовал предложению «Сохранить как ...» в файле решения .

Тем не менее, он открывается в VS 2012 по умолчанию.

Мой вопрос:

Как изменить файл SLN, чтобы он открывался в Visual Studio 2013?

Уве Кейм
источник

Ответы:

123

.slnФайл указывает на предназначенную версию в качестве одной из первых линий - например:

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

или:

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

Однако он может использовать это только в том случае, если приложением по умолчанию для .slnфайлов является «Microsoft Visual Studio Version Selector». Нередко .slnприложение по умолчанию имеет конкретную версию. В windows 8:

введите описание изображения здесь

вы можете сказать, какой из них используется по умолчанию, потому что он говорит «продолжайте использовать»:

введите описание изображения здесь

введите описание изображения здесь

Марк Гравелл
источник
2
@UweKeim хммм; это не мой опыт; с селектором версий по умолчанию, для меня правильная версия devenv загружается для каждого файла sln - возможно ли, что вы загрузили эти решения в VS2013 в какой-либо момент? это
Марк Грейвелл
2
Что ж, вашего предложения мне более чем достаточно. Мне нравятся теперь снова желтые значки папок по сравнению с темными в VS 2012!
Уве Кейм,
2
@UweKeim, если вы посмотрите в файл sln, во второй строке будет указано, с какой IDE открывать: # Visual Studio 2013vs# Visual Studio 2012
Марк Гравелл
1
@UweKeim Я полагаю, у него есть запасной вариант: «если я не узнаю значение или если IDE не установлена, используйте самую последнюю установленную IDE»
Марк Гравелл
6
для меня пусковая установка по умолчанию уже была установлена ​​на «Microsoft Visual Studio Version Selector», но она запускала решения, сделанные в Visual Studio 2013 в ide 2012 !!. Но повторное применение «Microsoft Visual Studio Version Selector» по умолчанию исправило его. Теперь 2012 открывается в ide 2012, а 2013 открывается в ide 2013. (Я использую Windows 7 64bit)
Питер Флэннери
35

Обратите внимание, что вы также можете принудительно обновить файл .sln или .proj с помощью командной строки, где devenv - это целевая версия IDE:

devenv "MyProject.sln" /upgrade

Пример:

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

Обратите внимание, что это не открывает Visual Studio. Альтернативный вариант - в среде IDE выбрать «Сохранить как» для файла решения и перезаписать или сохранить решение под новым именем.

Подробнее: http://msdn.microsoft.com/en-us/library/w15a82ay.aspx

зумей
источник
1
ЭТО, потому что это скрипт и не хакерский.
CAD парень
2
К сожалению, этот метод не всегда обновляет файл решения.
Theophilus
После этого devenv "MyProject.sln" /upgradeвы также должны отредактировать файл .sln, отметив @Zac's ans.
Вэй Гуо
22

Похоже, у OP уже есть рабочий ответ ... но для меня проблема была в другом. У меня было решение VS 2012 (на самом деле несколько), и я хотел преобразовать их в 2013 (я понимаю, что это тривиальное изменение в файле .sln, но я хотел, чтобы это было сделано автоматически на случай, если была какая-то секретная логика обновления, о которой я не знал) .

Поэтому я подумал, что открою его в VS2013, он автоматически обновится, как ожидалось, а затем я буду настроен на двойной щелчок по решению и увидеть его в VS2013 в будущем. Но открытие в VS2013 НЕ обновляло решение для меня автоматически, как ожидалось, и я не мог найти явного способа принудительного обновления после открытия файла в VS2013. Я мог бы работать с решением, сохранить изменения и закрыть VS2013, но .sln останется неизменным и не обновленным.

Оказывается, моя проблема заключалась в том, как я открывал решение ... по привычке я щелкаю файлы правой кнопкой мыши и выбираю «открыть с помощью», чтобы выбрать программу, которую я хочу использовать для открытия файла. Я делаю это часто. Примечание. Я НЕ говорю об изменении программы "открыть с помощью" по умолчанию, а просто открываю файл с помощью определенной программы один раз. Поэтому я бы щелкнул правой кнопкой мыши файл .sln ... откройте с помощью Visual Studio 2013 ... и ничего не обновится.

В конце концов я подумал зайти в VS2013, затем сделать File> Open и выбрать файл .sln (это мне чуждо, поскольку я почти никогда не открываю что-либо таким образом, может быть, вы такой же). Во всяком случае, это мгновенно обновило файл решения.

После обновления строки 2-3 файла .sln изменились с этого:

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

к этому:

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

Итак, по моему опыту, чтобы автоматически обновить VS2012 .sln до VS2013, вы должны открыть VS2013 и выбрать .sln в диалоговом окне File> Open. Использование оболочки проводника для принудительного открытия файла .sln в VS2013 не вызывает логику обновления (очевидно).

В качестве дополнительной заметки я протестировал другое решение, и после внесения изменений через Configuration Manager (который, очевидно, «касается» файла .sln) он обновил VS2012 до VS2013, даже после того, как открыл его с помощью правой кнопки мыши.

TCC
источник
1
Это именно то, что я пытался сделать. У меня есть обновление 3, и один проект обновляется автоматически, но другой изменится только тогда, когда я открою диспетчер конфигураций. Спасибо за советы!
Эрика,
2
Я даже открыл vs 2012 .sln из VS 2013, но для меня он НЕ обновился. Странно.
PositiveGuy
4
Обновление вызывает не открытие решения в VS 2013, а действие, изменяющее решение, например изменение параметра в активной конфигурации.
bleater 07
Я пробовал обновиться с vs2013 до vs2015, и он работает.
Dingxin Xu 07
7

У меня было решение, которое ранее было успешно обновлено с 2010 по 2013 год, но все же показало .sln как связанный с 2010 годом.

Я протестировал все методы, приведенные в этом потоке, и единственный, который успешно исправил .sln, заключался в том, чтобы открыть только Visual Studio 2013, затем открыть решение, которое все еще было связано с 2010 в среде IDE, затем использовать [Файл]> [Сохранить (имя) .sln as] для перезаписи существующего файла .sln.

Установка ассоциированного файла .sln в качестве «селектора версии Visual Studio» не внесла никаких изменений, и решение продолжало открываться в 2010 году.

Метод devenv (name) .sln / upgrade не внес изменений в мой файл .sln.

Взлом необработанного текста файла .sln повредил мой, и он вообще не открывался.

Джефф
источник
Ура, Джефф, я просто попал в ту же ситуацию, что и ты. Я должен сказать, что приятно, что Microsoft решила, что VS 2013 не пытается обновить все, чего касается, в отличие от предыдущих версий VS! Обычно все наоборот, и я пытаюсь помешать моим различным VS IDE обновлять друг друга файлы .proj и .sln :)
Саймон Брэнгвин
@SimonBrangwin, что является улучшением, за исключением того, что если вы явно вызываете / upgrade в соответствии с другим ответом (ами), вы ожидаете, что он действительно выполнит запрошенное обновление!
Станниус 06
Джефф, спасибо! Это единственный способ обновить мой VS 2013 sln, чтобы он открывался по умолчанию с 2015 года. Мне также пришлось открыть проводник решений и вручную выбрать узел решения в верхней части дерева проводника, чтобы увидеть 'Сохранить (имя ) .sln as 'в меню Файл.
ToastyMallows
6

Чтобы решить эту проблему, я просто изменил следующие строки файла .sln:

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

в эти:

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

Строку комментария следует изменить, поскольку она анализируется загрузчиком решения.

Зак
источник
4

Это может сработать для читателей, пытающихся обновить файл решения до Visual Studio 2015 (я обновил решение VS 2012).

  1. Откройте решение в VS 2015.
  2. Добавьте в решение новый проект. (Я добавил тестовый проект.)
  3. Удалите проект.
  4. Сохраните решение.

Возможно, вы захотите удалить удаленную папку проекта в это время, поскольку шаг 3 не удалил ее.

Это сработало для меня, когда не помогли ни ответы zumey, ни TCC .

РЕДАКТИРОВАТЬ

У Metro Smurf был похожий, но более простой ответ, чем у меня, на аналогичный вопрос . Его шаги были:

  1. Открытое решение в VS 2015
  2. Щелкните решение правой кнопкой мыши> Добавить> Новая папка решения (имя не имеет значения)
  3. Сохранить решение
  4. Удалите недавно добавленную папку решения
  5. Сохранить решение
Теофил
источник
Я просто переименовал проект и потом отменил его. Таким образом, папка не создается
Энди