2010-09-23 4 views
6

Cách kiểm tra phiên bản khung .net khi bắt đầu ứng dụng WinForms đã viết trên .NET 3.5? Nếu .net 3.5 chưa được cài đặt, ứng dụng sẽ hiển thị thông báo về nó (có thể có liên kết trên trình cài đặt .net hoặc một số khác). Bây giờ nó hiển thị một số lỗi không rõ ràng cho người dùng.Kiểm tra phiên bản .Net từ ứng dụng WinForms

+2

Bạn mong đợi ứng dụng .Net 3.5 chạy khi khung .Net 3.5 chưa được cài đặt như thế nào?Bạn có thấy bắt-22 trong này? – slugster

+0

++++ slugster !!! – Aliostad

Trả lời

2

Hãy xem dự án C++ này để thực hiện những gì bạn đang yêu cầu.

http://www.codeproject.com/KB/mcpp/DotNetTester.aspx

Bạn chỉ muốn thiết lập các phím tắt của bạn để khởi động mà ứng dụng, trong đó sẽ lần lượt khởi động ứng dụng .net bạn.

Từ các mô tả dự án:

Ví dụ (kiểm tra cho tối thiểu là FW 1.1 và khởi động một ứng dụng):

dotNetTester.exe 1.1 C: \ Temp \ Myapp.exeC: \ Temp \ Myapp.exe

2

Bạn phải tạo ứng dụng starter được viết bằng .Net 2.0 hoặc dưới dạng ứng dụng không được quản lý (để bao gồm nếu không có phiên bản .Net được cài đặt ở tất cả) và bắt đầu trước và sau đó nếu .Net 3.5 được cài đặt nó sẽ bắt đầu ứng dụng thực, nếu không nó sẽ hiển thị một thông báo lỗi tốt đẹp.

Tuy nhiên, giải pháp thậm chí còn tốt hơn là cài đặt trình cài đặt của bạn .Net 3.5, như vậy bạn sẽ không phải lo lắng về điều đó (nhưng điều này rõ ràng sẽ không hoạt động đối với triển khai XCopy, v.v.).

2

Làm điều đó trong ứng dụng .NET 3.5 sẽ rất khó, vì bạn chưa bao giờ đến thời điểm bắt đầu ứng dụng của mình.

Nói chung việc này được thực hiện trong trình cài đặt cho ứng dụng, bằng cách thêm điều kiện khởi chạy. Xem http://support.microsoft.com/kb/315291

EDIT: Tôi tìm thấy một bài viết giải thích làm thế nào để viết một ứng dụng không được quản lý để chạy trước khi bắt đầu ứng dụng NET của bạn (như đề xuất trong câu trả lời ho1 của) http://blogs.msdn.com/b/astebner/archive/2009/01/31/9387659.aspx

1

Tôi đọc lại câu hỏi của bạn - bạn có thể không chạy ứng dụng .NET x ver khi .NET x chưa được cài đặt! Kết thúc.

Nếu bạn đã cài đặt, sau đó cho purpose- khác

Sử dụng System.Environment.Version để tìm phiên bản bạn đang sử dụng.

Để biết tất cả các phiên bản được cài đặt, check this.

Liệt kê các khóa con của HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP. Mỗi khóa con là phiên bản .Net. Nó sẽ có giá trị Install = 1 nếu nó hiện diện trên máy, giá trị SP hiển thị gói dịch vụ và giá trị MSI = 1 nếu nó được cài đặt bằng MSI. (.Net 2.0 trên Vista không có ví dụ cuối cùng, vì nó là một phần của hệ điều hành)

Bạn có thể truy cập khóa đăng ký này "HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP" và lặp lại các giá trị.

+0

Đây là một mối quan tâm: Nếu khung 4.0 được cài đặt trong khi 3,5 không phải là ... –

+0

Tôi đọc lại câu hỏi, Danny và đã sửa câu trả lời của tôi. – Nayan