2012-06-14 26 views
20

Đối với các tiện ích mở rộng như .sln hoặc .csproj, ứng dụng mặc định là Bộ chọn phiên bản Microsoft Visual Studio. Tôi đã cài đặt hai phiên bản, 2010 SP1 và 2012 RC. Làm thế nào chính xác ứng dụng này sẽ quyết định VS để khởi động?Chính xác "Visual Studio Version Selector" chọn phiên bản VS như thế nào?

tôi sẽ nói rằng nó hoạt động như thế này:

  • Nếu nó tìm thấy bất kỳ gợi ý trong file cho phiên bản nào nên được sử dụng, sau đó nó sử dụng nó. Ví dụ, ở phía trên cùng của .sln file có cái gì đó như thế này nên Version Selector có thể quyết định:

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

  • Nếu nó không tìm thấy bất kỳ dấu hiệu nó sẽ sử dụng phiên bản nào sau đó được cài đặt (trong trường hợp của tôi, tôi cài đặt lại 2010 SP1 sau năm 2012 đã được cài đặt trên máy tính của tôi và bây giờ tôi nghĩ rằng VS2010 được mở thường xuyên hơn năm 2012 nhưng không chắc chắn 100%).

Đây là cảm giác của tôi nhưng quy tắc chính xác là gì?

+2

Không được ghi nhận. Nhưng bạn có thể yên tâm giả sử nó sử dụng số phiên bản trong tệp. –

+0

@ HansPassant: Tôi cũng đoán vậy. – Luciano

Trả lời

26

Có một số thông tin phiên bản trong tiêu đề tệp. Nếu không nó sẽ không thể cho qua trình duyệt để hiển thị biểu tượng tài liệu khác nhau vào file sln với một số:

VS2008VS2010VS2012VS2013VS2015VS2017 đại diện cho các file sln cho các phiên bản VS 2008/2010/2012/2013/2015/2017

Số này trên biểu tượng biến mất nếu bạn chỉnh sửa tệp .sln bằng notepad hoặc một số trình soạn thảo văn bản khác không giữ chữ ký UTF-8 (xem comment by Paul Groke). Trong trường hợp này, bộ chọn phiên bản không thể chọn phiên bản phù hợp và bạn không thể mở phiên bản đó từ trình khám phá tệp. Bạn có thể mở nó một cách cụ thể từ bên trong Visual Studio và lưu tệp .sln để sửa nó. Xem thêm this để biết thêm về vấn đề này.

+5

Bạn có thể chỉnh sửa các tệp .sln bằng trình chỉnh sửa văn bản lưu giữ chữ ký UTF-8 (còn được gọi là "dấu thứ tự byte" không chính xác). Nếu không có chữ ký UTF-8, bộ chọn phiên bản sẽ bỏ qua nội dung của tệp và chỉ sử dụng phiên bản mới nhất để mở nó. Tôi chỉ thử điều này trên một trong các tệp .sln "bị hỏng" của chúng tôi - hoạt động như một sự quyến rũ. Đã mở nó trong Notepad2, được lưu lại trong "UTF-8 signature" format => hoạt động lại. Không cần phải lưu lại với VS. Xem câu trả lời được chấp nhận cho http://stackoverflow.com/questions/2804759/vslauncher-starts-wrong-version –

+1

@PaulGroke - Dấu thứ tự byte (BOM) là tên riêng của chữ ký 'UTF-8'. Nó chỉ xảy ra rằng chỉ có một thứ tự byte cho UTF-8. Nhưng UTF-16 có 2 đơn đặt hàng byte. Xem: https://en.wikipedia.org/wiki/Byte_order_mark –

+0

@awe - Đừng quên lưu tệp bằng 'CRLF' (kết thúc dòng kiểu Windows) không chỉ' LF' (kết thúc dòng kiểu Unix). –

Các vấn đề liên quan