Jak wymusić otwarcie pliku rozwiązania (SLN) w programie Visual Studio 2013?

102

Próba jawnego otwarcia rozwiązania VS 2012 (pliku SLN) w VS 2013 kończy się sukcesem. Po prostu dwukrotne kliknięcie w Eksploratorze Windows nadal otwiera go w VS 2012.

Przeczytałem „ Visual Studio 2012 nie konwertuje rozwiązania vs2010? ” I postąpiłem zgodnie z sugestią „Zapisz jako ...” w pliku rozwiązania .

Mimo to domyślnie otwiera się w VS 2012.

Moje pytanie:

Jak zmienić plik SLN, aby wymusić jego otwarcie w programie Visual Studio 2013?

Uwe Keim
źródło

Odpowiedzi:

123

.slnPlik wskazuje przeznaczony wersję jako jeden z pierwszych linii - na przykład:

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

lub:

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

Jednak - może to wykorzystać tylko wtedy, gdy domyślną aplikacją do .slnplików jest „Selektor wersji programu Microsoft Visual Studio”. Często zdarza się, że domyślna .slnaplikacja jest konkretną wersją. W systemie Windows 8:

wprowadź opis obrazu tutaj

możesz określić, który jest domyślny, ponieważ jest napisane „używaj dalej”:

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

Marc Gravell
źródło
2
@UweKeim hmmm; to nie jest moje doświadczenie; z selektorem wersji jako domyślnym, dla mnie poprawna wersja devenv jest ładowana z pliku sln - czy jest możliwe, że w dowolnym momencie załadowałeś te rozwiązania do VS2013? to je
ulepszy
2
Twoja sugestia jest dla mnie więcej niż wystarczająca. Uwielbiam teraz ponownie żółte ikony folderów, w porównaniu do tych ciemnych w VS 2012!
Uwe Keim
2
@UweKeim Jeśli zajrzysz do pliku sln, druga linia mówi mu, które IDE ma zostać otwarte: # Visual Studio 2013vs# Visual Studio 2012
Marc Gravell
1
@UweKeim Wyobrażam sobie, że ma błąd „jeśli nie rozpoznaję wartości lub jeśli IDE nie jest zainstalowane, użyj najnowszego zainstalowanego IDE”
Marc Gravell
6
dla mnie domyślny program uruchamiający był już ustawiony na „Microsoft Visual Studio Version Selector”, ale uruchamiał rozwiązania wykonane w Visual Studio 2013 w 2012 ide !!. Jednak ponowne zastosowanie „Microsoft Visual Studio Version Selector” jako domyślnego rozwiązało problem. Teraz 2012 otwiera się w 2012 ide, a 2013 otwiera się w 2013 ide. (Używam systemu Windows 7 64-bitowego)
Peter Flannery
35

Zauważ, że możesz także wymusić aktualizację pliku .sln lub .proj, używając wiersza poleceń, gdzie devenv jest docelową wersją IDE:

devenv "MyProject.sln" /upgrade

Przykład:

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

Należy pamiętać, że nie powoduje to otwarcia programu Visual Studio. Alternatywą jest wybranie z poziomu IDE opcji „Zapisz jako” dla pliku rozwiązania i nadpisanie lub zapisanie rozwiązania pod nową nazwą.

Czytaj więcej: http://msdn.microsoft.com/en-us/library/w15a82ay.aspx

zumey
źródło
1
TO, ponieważ jest skryptowalny i nie jest hacky.
Facet z CAD
2
Niestety ta technika nie zawsze aktualizuje plik rozwiązania.
Theophilus
Po zakończeniu devenv "MyProject.sln" /upgradepowinieneś również edytować plik .sln, sprawdzić ans @ Zaca.
Wei Guo
22

Wygląda na to, że OP ma już działającą odpowiedź ... ale dla mnie problem był inny. Miałem rozwiązanie VS 2012 (a właściwie kilka) i chciałem przekonwertować je na 2013 (co, jak rozumiem, jest trywialną zmianą w pliku .sln, ale chciałem, aby było to zrobione automatycznie, na wypadek, gdyby istniała jakaś tajna logika aktualizacji, której nie byłem świadomy) .

Pomyślałem więc, że otworzę go w VS2013, automatycznie zaktualizuje się zgodnie z oczekiwaniami, a następnie będę ustawiony na dwukrotne kliknięcie rozwiązania i zobaczenie go w VS2013 w przyszłości. Ale otwarcie w VS2013 NIE oznaczało automatycznej aktualizacji rozwiązania zgodnie z oczekiwaniami i nie mogłem znaleźć wyraźnego sposobu na wymuszenie aktualizacji po otwarciu pliku w VS2013. Mógłbym pracować z rozwiązaniem, zapisać zmiany i zamknąć VS2013, ale plik .sln pozostałby niezmieniony i niezaktualizowany.

Okazało się, że mój problem polegał na tym, jak otwierałem rozwiązanie ... zwykle klikam pliki prawym przyciskiem myszy i wybieram opcję „otwórz za pomocą”, aby wybrać program, którego chcę użyć do otwarcia pliku. Często to robię. Uwaga NIE mówię o zmianie domyślnego programu „otwórz za pomocą”, ale po prostu raz otworzę plik w określonym programie. Więc kliknąłbym prawym przyciskiem myszy plik .sln ... otwórz w Visual Studio 2013 ... i nic się nie zaktualizuje.

W końcu pomyślałem, aby przejść do VS2013, a następnie zrobić Plik> Otwórz i wybrać plik .sln (jest to dla mnie obce, ponieważ prawie nigdy nie otwieram niczego w ten sposób, może jesteś w ten sam sposób). W każdym razie to natychmiast zaktualizowało plik rozwiązania.

Po aktualizacji linie 2-3 pliku .sln zmieniły się z tego:

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

do tego:

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

Z mojego doświadczenia wynika, że ​​aby automatycznie zaktualizować plik VS2012 .sln do VS2013, należy otworzyć VS2013 i wybrać plik .sln w oknie dialogowym Plik> Otwórz. Użycie powłoki eksploratora do wymuszenia otwarcia pliku .sln w VS2013 nie wywołuje logiki aktualizacji (najwyraźniej).

Jako kolejna uwaga, przetestowałem z innym rozwiązaniem i po wprowadzeniu zmian za pomocą Configuration Manager (który oczywiście „dotyka” pliku .sln) zaktualizowałem VS2012 do VS2013, nawet po otwarciu go przez kliknięcie prawym przyciskiem myszy Otwórz za pomocą.

TCC
źródło
1
Dokładnie to próbowałem zrobić. Mam Update 3 i jeden projekt jest automatycznie aktualizowany, ale drugi zmieniłby się dopiero po otwarciu Configuration Manager. Dzięki za wskazówki!
Erica
2
Otworzyłem nawet plik VS 2012 .sln z poziomu VS 2013, ale dla mnie NIE został on zaktualizowany. Dziwne.
PositiveGuy,
4
To nie otwarcie rozwiązania w VS 2013 wyzwala uaktualnienie, jest to akcja modyfikująca rozwiązanie, na przykład zmiana ustawienia w aktywnej konfiguracji.
bleater
Próbowałem go zaktualizować z vs2013 do vs2015 i działa.
Dingxin Xu
7

Miałem rozwiązanie, które zostało wcześniej pomyślnie zaktualizowane w latach 2010 do 2013, ale nadal wyświetlało .sln jako skojarzone z 2010.

Przetestowałem wszystkie metody podane w tym wątku i jedyną, która pomyślnie poprawiła plik .sln, było samo otwarcie Visual Studio 2013, następnie otwarcie rozwiązania, które wciąż było powiązane z 2010 w IDE, a następnie użycie [Plik]> [Zapisz (nazwa) .sln as], aby nadpisać istniejący plik .sln.

Ustawienie asoc pliku .sln jako „selektora wersji programu Visual Studio” nie spowodowało żadnej zmiany, a rozwiązanie było nadal otwierane w 2010 r.

Metoda devenv (nazwa) .sln / upgrade nie spowodowała żadnych zmian w moim pliku .sln.

Hakowanie surowego tekstu pliku .sln spowodowało uszkodzenie mojego i nie można go w ogóle otworzyć.

Jeff
źródło
Cześć Jeff, właśnie znalazłem się w takiej samej sytuacji jak ty. Muszę jednak powiedzieć, że fajnie, że Microsoft zdecydował, że VS 2013 nie próbuje aktualizować wszystkiego, czego dotknie, w przeciwieństwie do poprzednich wersji VS! Zwykle jest na odwrót i staram się uniemożliwić moim różnym IDE VS wzajemną aktualizację plików .proj i .sln :)
Simon Brangwin,
@SimonBrangwin, co jest ulepszeniem, z wyjątkiem tego, że jeśli jawnie wywołasz z / upgrade zgodnie z innymi odpowiedziami, można oczekiwać, że faktycznie wykona żądaną aktualizację!
stannius
Jeff dzięki! To jedyny sposób, w jaki mogłem znaleźć uaktualnienie mojego VS 2013 sln do domyślnego otwierania z 2015. Musiałem również otworzyć eksplorator rozwiązań i ręcznie wybrać węzeł rozwiązania u góry drzewa eksploratora, aby zobaczyć 'Zapisz (nazwa ) .sln as 'w menu Plik.
ToastyMallows
6

Aby rozwiązać ten problem, po prostu zmieniłem następujące wiersze pliku .sln:

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

do tych:

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

Wiersz komentarza ma zostać zmieniony, gdy jest analizowany przez moduł ładujący rozwiązanie.

Zac
źródło
4

Może to zadziałać w przypadku czytelników próbujących uaktualnić plik rozwiązania do programu Visual Studio 2015. (zaktualizowałem rozwiązanie VS 2012).

  1. Otwórz rozwiązanie w VS 2015.
  2. Dodaj nowy projekt do rozwiązania. (Dodałem projekt testowy.)
  3. Usuń projekt.
  4. Zapisz rozwiązanie.

Możesz teraz chcieć usunąć usunięty folder projektu, ponieważ krok 3 go nie usunął.

To działało dla mnie, gdy ani zumey, ani TCC odpowiedzi .

EDYTOWAĆ

Metro Smurf miał podobną, ale łatwiejszą odpowiedź niż moja na podobne pytanie . Jego kroki były następujące:

  1. Otwarte rozwiązanie w VS 2015
  2. Kliknij prawym przyciskiem myszy rozwiązanie> Dodaj> Nowy folder rozwiązań (nazwa nie ma znaczenia)
  3. Zapisz rozwiązanie
  4. Usuń nowo dodany folder rozwiązania
  5. Zapisz rozwiązanie
Theophilus
źródło
Po prostu zmieniłem nazwę projektu i później go przywróciłem. W ten sposób żaden folder nie zostanie utworzony
Andy