2012-06-14 12 views
20

W przypadku rozszerzeń, takich jak .sln lub .csproj, domyślną aplikacją jest Microsoft Visual Studio Selector wersji. Mam dwie wersje zainstalowane, 2010 SP1 i 2012 RC. Jak dokładnie ta aplikacja zdecyduje, który VS uruchomić?W jaki dokładnie sposób "Selektor wersji programu Visual Studio" wybiera wersję VS?

Powiedziałbym, że to działa tak:

  • Jeśli stwierdzi żadnego śladu w danym pliku, które powinny być wykorzystane w wersji, to używa. Na przykład, u góry .sln plików istnieje coś takiego więc Selector wersja może zdecydować:

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

  • Jeśli nie znajdzie żadnego śladu będzie użyć dowolnej wersji został później zainstalowany (w moim przypadku ponownie zainstalowałem 2010 SP1 po 2012 roku był już zainstalowany na moim komputerze i teraz myślę, że VS2010 jest otwierany częściej niż w 2012 roku, ale nie jestem w 100% pewny).

To jest moje odczucie, ale jakie są dokładne zasady?

+2

Nieudokumentowane. Ale możesz spokojnie założyć, że używa numeru wersji w pliku. –

+0

@HansPassant: Ja też to odgaduję. – Luciano

Odpowiedz

26

Istnieje kilka informacji o wersji w nagłówku pliku. W przeciwnym razie nie byłoby możliwe File Explorer, aby wyświetlić inną ikonę dokumentu na plik .sln z numerem:

VS2008VS2010VS2012VS2013VS2015VS2017 reprezentujący pliki .sln dla VS wersji 2008/2010/2012/2013/2015/2017

Ta liczba na ikonie znika, jeśli edytujesz plik .sln za pomocą notatnika lub innego edytora tekstu, który nie zachowuje podpisu UTF-8 (patrz comment by Paul Groke). W tym przypadku również selektor wersji nie może wybrać odpowiedniej wersji i nie można go otworzyć z eksploratora plików. Możesz go otworzyć w Visual Studio i zapisać plik .sln, aby go naprawić. Zobacz także this, aby uzyskać więcej informacji na ten temat.

+5

Możesz edytować pliki .sln za pomocą edytora tekstu, który zachowuje podpis UTF-8 (również niepoprawnie nazywany "znacznikiem kolejności bajtów"). Jeśli podpis UTF-8 nie jest obecny, selektor wersji zignoruje zawartość pliku i po prostu użyje najnowszej wersji, aby go otworzyć. Właśnie wypróbowałem to na jednym z naszych "uszkodzonych" plików .sln - działa jak urok. Otwarty w Notatniku2, ponownie zapisany w "formacie podpisu UTF-8" => działa ponownie. Nie ma potrzeby ponownego zapisywania przy użyciu VS. Zobacz zaakceptowaną odpowiedź na http://stackoverflow.com/questions/2804759/vslauncher-starts-wrong-version –

+1

@PaulGroke - "Znak porządku bajtów" (BOM) to właściwa nazwa 'sygnatury UTF-8'. Zdarza się, że istnieje tylko jedna bajtowa kolejność dla UTF-8. Ale UTF-16 ma 2 bajtowe zamówienia. Zobacz: https://en.wikipedia.org/wiki/Byte_order_mark –

+0

@awe - Nie zapomnij zapisać pliku z 'CRLF' (zakończeniami linii stylu Windows), nie tylko' LF' (końcówki linii w stylu Unix). –

Powiązane problemy