2012-10-27 59 views
19

Trong trường hợp cụ thể này, tôi cần chạy ứng dụng .NETplated cho Linux. Bởi ý nghĩa phức tạp - dự án đó đã được phát triển trong 3 năm và tôi không muốn viết lại nó trong java hay cái gì khác và phát triển và hỗ trợ cả .NET và Java sau này.Cách viết chương trình trong C# .NET, để chạy chúng trên Linux/Wine/Mono?

Ứng dụng đang tạo các sự kiện chuột và bàn phím (bằng cách nhập winapi/dll) và sử dụng cổng nối tiếp. Tôi cũng có vài giờ cho sự chậm trễ - cho giao tiếp cổng nối tiếp (10-20ms, tôi không cần độ chính xác lớn ở đây).

Phần còn lại chỉ là một rất nhiều mã đơn giản, không có gì đặc biệt, không có điều khiển kỳ lạ, không có directx, vv

tôi nên mong đợi gì? Điều này có hiệu quả không?

Nếu một phần mã nào đó bị lỗi - tôi có thể thay đổi một chút, tạo kết nối mạng giữa ứng dụng .net và ứng dụng nhỏ trên linux mà tôi có thể viết để gửi các sự kiện chuột và bàn phím hoặc giao tiếp RS232.

Ngoài ra tôi muốn hỏi về Rượu và .NET nói chung:

Làm thế nào để viết các ứng dụng .NET mà nên chạy trên Linux/Rượu/Mono?

  • phiên bản khuôn khổ nào? (1.x, 2.0 hoặc có thể tôi sử dụng 3,5?)
  • những gì tôi nên tránh

Chỉnh sửa/chuyển từ bình luận (nhập khẩu từ cửa sổ dll giờ?):

tôi thấy mono vài năm trước, nhưng nó thật khủng khiếp. Bây giờ tôi thấy nó lớn lên, hỗ trợ LINQ, Threading và các tính năng phức tạp khác. Ngoài ra bây giờ giúp trông thực sự nghiêm trọng. Tôi vẫn chưa chấp nhận câu trả lời, vì tôi thấy rằng mọi người vẫn đăng những liên kết rất hữu ích. Nếu câu hỏi này nhận được nhiều +1 tôi sẽ viết lại nó và có lẽ điều này sẽ giúp người khác.

Tôi hy vọng một người nào đó ở đây có một số kinh nghiệm thực tế với .NET trên Linux ở đây ...

+1

[Mono] (http://www.mono-project.com/Main_Page) là một triển khai mã nguồn mở của .NET của Microsoft mà bạn có thể sử dụng cho việc này. –

+0

Cảm ơn. Tôi thấy điều này ở đâu đó, nhưng tôi quên mất. Dù sao tôi vẫn cần một số thông tin thực tế từ một người đã phát triển một cái gì đó mà làm việc trong Mono. – Kamil

+1

Nếu đó là khả năng tương thích đáng lo ngại, có [Trình phân tích di chuyển Mono] (http://www.mono-project.com/MoMA) có thể hiển thị các vấn đề tiềm ẩn. –

Trả lời

17

Bạn đã đọc về Mono.NET trên http://www.mono-project.com?

Nó cho phép bạn viết các ứng dụng .NET cho Linux với những khác biệt nhỏ so với việc triển khai Microsoft. Tôi không nghĩ rằng rượu sẽ đối phó với bất kỳ thành phần .NET nào.

Chỉ cần đọc tài liệu trước và bạn có thể di chuyển.

PS: Điều này cũng cung cấp cho bạn danh sách tương thích giữa mono và .NET. http://www.mono-project.com/CompatibilityMoMA(mono migration analyzer) là một công cụ sẽ quét bất kỳ ứng dụng .NET nào đã được tạo để xem liệu nó có tương thích để triển khai trên Linux hay không.

+1

Cảm ơn. Thats có lẽ đủ cho tôi, nhưng bị bệnh chờ đợi với chấp nhận. Tôi thấy rằng mọi người vẫn đang đăng các liên kết hữu ích. – Kamil

+1

có, phần tốt nhất là nó được chuyển tiếp hơn nữa, vì vậy bạn có thể sử dụng nó để viết mã cho android và ios quá. – Freeman

4

Trong bài đăng này, tôi rút ngắn và kết hợp tất cả thông tin tôi đã học được từ những người khác trong chuỗi này.

  1. Sự xâm nhập nguồn mở .NET cho Linux được gọi là Mono.

  2. Tính tương thích cũng được ghi lại (xem liên kết bên dưới). Mono hỗ trợ LINQ, luồng và một số tính năng phức tạp khác.

  3. Nó thậm chí còn hỗ trợ InteropServices. Có thể sử dụng DllImport trên thư viện linux (!), Chẳng hạn như libc.so chẳng hạn.

  4. Mono có thể hỗ trợ Android và iOS (họ được dựa trên Linux, phải không?)

  5. Có một công cụ cho Mono tương thích phân tích gọi MoMA (Mono Migration Analyzer)

Công cụ Trình phân tích di chuyển mono (MoMA) giúp bạn xác định các vấn đề mà bạn có thể có khi chuyển ứng dụng .Net sang Mono. Nó giúp xác định cuộc gọi nền tảng cụ thể (P/Gọi) và các khu vực chưa được được hỗ trợ bởi dự án Mono.

Liên kết hữu ích:

Mono - home page

Mono - page with documentation

Mono - compatibility page

MoMA - Mono Migration Analysis page

3

Chúng tôi có một vài .ne các ứng dụng chạy trên Windows hoặc Linux với Mono.

Bạn có thể phát triển trong VisualStudio nếu muốn, không nhất thiết phải sử dụng môi trường phát triển Mono. Chỉ có các thư viện mono thời gian chạy được yêu cầu để chạy các ứng dụng .net trên Linux.

Chúng tôi sử dụng mục tiêu net 2.0 để biên dịch các ứng dụng này trong VisualStudio, vì mono gần như tương thích 100% với .net 2.0. Mono cũng thực hiện APIS từ các phiên bản sau .net, nhưng không phải tất cả và không hoàn chỉnh. Nếu bạn sử dụng các tính năng của các phiên bản mới hơn 2.0, bạn nên kiểm tra xem chúng có được hỗ trợ hay không hoặc sử dụng công cụ phân tích khả năng tương thích Mono. Bạn cũng có thể sử dụng Mono phát triển thay vì Visual Studio, người tiền nhiệm của tôi đã làm điều đó; kết quả là khá nhiều như nhau, và tôi thích sử dụng Visual Studio thay thế.

Chúng tôi không tìm thấy bất kỳ rắc rối lớn, và các ứng dụng là tương đối phức tạp, nặng nề đa luồng, async I/O, WinForms, ổ cắm, cổng nối tiếp, vv

Một số ứng dụng sử dụng các thư viện .net mà không phải là có sẵn trong MS .net, nhưng tất cả chúng có thể được cài đặt trên Windows cũng như vậy mà không có vấn đề để chạy các ứng dụng này trong Windows.

Hy vọng rằng sẽ giúp,

1

Bạn có thể phát triển C# ứng dụng trên linux với NET Core: https://www.microsoft.com/net/core

Sau khi bạn cài đặt nó, gõ dotnet new trong terminal của bạn để có được một danh sách các mẫu ứng dụng mà có thể được tạo để bạn bắt đầu.

Tính NET Lõi 2,0 ngày hôm nay, đây là danh sách:

Templates           Short Name  Language   Tags    
-------------------------------------------------------------------------------------------------------- 
Console Application        console   [C#], F#, VB  Common/Console  
Class library          classlib   [C#], F#, VB  Common/Library  
Unit Test Project         mstest   [C#], F#, VB  Test/MSTest   
xUnit Test Project        xunit   [C#], F#, VB  Test/xUnit   
ASP.NET Core Empty        web    [C#], F#   Web/Empty   
ASP.NET Core Web App (Model-View-Controller)  mvc    [C#], F#   Web/MVC    
ASP.NET Core Web App        razor   [C#]    Web/MVC/Razor Pages 
ASP.NET Core with Angular       angular   [C#]    Web/MVC/SPA   
ASP.NET Core with React.js      react   [C#]    Web/MVC/SPA   
ASP.NET Core with React.js and Redux    reactredux  [C#]    Web/MVC/SPA   
ASP.NET Core Web API        webapi   [C#], F#   Web/WebAPI   
global.json file         globaljson       Config    
Nuget Config          nugetconfig      Config    
Web Config          webconfig       Config    
Solution File          sln        Solution   
Razor Page          page        Web/ASP.NET   
MVC ViewImports         viewimports      Web/ASP.NET   
MVC ViewStart          viewstart       Web/ASP.NET   

Phiên bản mới nhất hiện nay là 2.0.

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