2017-12-08 64 views
5

Tôi đang sử dụng VS2017 trên Windows 10 để làm việc trên dự án C#. Nó là một ứng dụng giao diện điều khiển thực sự nhỏ mà không có gì nhưng yêu cầu đặc quyền quản trị viên và sau đó chạy một HTA.Tạo ứng dụng .NET hoạt động trên mọi phiên bản .NET nếu chỉ các yêu cầu cơ bản

Mã chỉ tài liệu tham khảo các hội đồng NET:

using System; 
using System.Diagnostics; 
using System.IO; 

Vì tất cả những tồn tại trong .NET từ 2,0 và chuyển tiếp, có vẻ như chúng ta có thể để tạo ra các ứng dụng mà không cần phải chỉ định bất cứ điều gì ngoại trừ. NET 2.0. Nhưng làm điều này khiến ứng dụng hiển thị thông báo "phải cài đặt .NET 2.0 hoặc 3.5" khi chạy nó trên một hệ thống chỉ có .NET 4.0 trở lên.

Có cách nào để tạo ứng dụng này để ứng dụng không chỉ định phiên bản .NET không? Tôi đã thử xóa <TargetFrameworkVersion> từ tệp .csproj nhưng nó vẫn xây dựng tư duy đó là một ứng dụng .NET 4.0.

CẬP NHẬT

Dựa trên một câu trả lời gợi ý và article này, tôi cập nhật App.config để hiển thị nó hỗ trợ cả v2 và v4:

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0"/> 
</startup> 

sau đó tôi được xây dựng với mục tiêu được đặt NET Khung 4.6.1 và chạy nó trên một hệ thống Win7Pro-64bit chỉ với NET Framework 2.0/3.5 được cài đặt. Nó hiển thị thông báo "Trước tiên bạn phải cài đặt một trong các phiên bản .NET Framework sau đây" và chỉ liệt kê v4.0.30319.

Tôi sau đó được xây dựng với bộ mục tiêu thành NET Framework 2.0 và chạy trên hệ thống Win10Pro-64bit chỉ với cài đặt NET Framework 4.0. Nó hiển thị một thông báo mà tôi đã phải "NET Framework 3.5" hoặc ứng dụng của tôi có thể không hoạt động chính xác. Tôi đã thử tùy chọn "bỏ qua" này và ứng dụng không hoạt động.

Chạy trên hệ thống theo mục tiêu, ứng dụng hoạt động tốt.

Tại sao Google không sử dụng bất kỳ khung nào khả dụng vì nó được chỉ định là hỗ trợ cả?

+0

Bạn có thay đổi phiên bản "Khung mục tiêu" trên menu thả xuống của tab "xây dựng" từ thuộc tính của dự án không? Bạn có thể xây dựng nó như là một dự án .NET 2.0 và chạy nó trên bất kỳ máy tính nào có cài đặt 2.0 hoặc cao hơn. –

+0

không. bạn phải được gắn với một phiên bản clr. hoặc bạn có thể tạo ra các hội đồng bản địa. –

+0

Mặc dù khá chủ quan, tôi nghĩ rằng loại kinh nghiệm xấu xí đó là thực tế có thể, bằng cách buộc hầu hết các nhà phát triển sử dụng .NET 4.x và nói lời tạm biệt với .NET 2.x/3.x. Nếu không có đau đớn như vậy, nhiều người sẽ dính vào những nền tảng cũ và từ chối nâng cấp. Một lần nữa, .NET Core giới thiệu nhiều thay đổi hơn nữa. –

Trả lời

2

Bên trong App.Config bạn có thể chỉ định phiên bản thời gian chạy mà bạn có thể hỗ trợ.

https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-configure-an-app-to-support-net-framework-4-or-4-5

<configuration> 
    <startup> 
    <supportedRuntime version="v1.1.4322"/> 
    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0"/> 
    </startup> 
</configuration> 

Như với bất cứ điều gì, bạn nên kiểm tra rằng ứng dụng của bạn thực sự có thể chạy trên tất cả các phiên bản cụ thể.

+0

Tôi đã cập nhật bài đăng gốc của mình. Tôi đã thử điều đó và nó không hoạt động mặc dù bài viết này (https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/cách cấu hình-an-ứng dụng-hỗ trợ-net-framework-4-hoặc-4-5) nói rằng cần. – IronRod

+0

Nếu bất cứ ai có thể cung cấp cho tôi một chương trình mẫu thực hiện điều này - hãy chạy trên cả .NET 2.0/3.5 và .NET 4+, tôi sẽ rất cảm kích. Tôi vẫn chưa thể làm được điều này như của VS2017 15.5.7. Hoặc, tôi có thể cung cấp chương trình đơn giản của tôi và xem liệu bạn có thể biên dịch nó và có nó làm việc cho bạn hay không. – IronRod

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