Kiến thức về C # có được sử dụng trong hệ thống Linux không?


44

Tôi biết C # và tôi thích chuyển đổi giữa các hệ thống và sử dụng Linux. Tôi có thể sử dụng C # để xây dựng các ứng dụng thường hoạt động trên Linux không? Tôi nên làm gì để sử dụng kiến ​​thức về C # trong hệ thống Linux?

Lưu ý rằng tôi chuyên về Unity3D, nhưng tôi vẫn muốn tạo các ứng dụng Linux bằng C #.


1
KerbalSpaceProgram được viết bằng Unity và chạy trên Win / Mac / Linux. Plugin / Mods cho KSP được viết bằng C # và có thể được phát triển trên Win, Mac hoặc Linux. Bây giờ tôi sử dụng Mac chủ yếu thay vì Linux với giá $ REASONS, nhưng tôi phát triển mod KSP trên nền tảng đó trong C # chứ không phải windows. Tôi có thể sẽ sớm viết một số mã C # độc lập với các bài kiểm tra xUnit bên ngoài KSP và nó sẽ giống như bất kỳ sự phát triển nào khác, nhưng tôi sẽ phải chạy nó dưới dạng đơn. MechJeb có một ví dụ Makefile xây dựng trên Mac + Linux: github.com/MuMech/MechJeb2/blob/master/Makefile (yêu cầu dlls trò chơi KSP liên kết).
lamont

3
Các ứng dụng C # thường không chạy tự nhiên ở bất cứ đâu.
Ngừng làm hại Monica

@OrangeDog Tôi biết, ngay cả trên Windows bạn cũng cần cài đặt .Net framework. Nếu tôi nói "nguyên bản" tôi có nghĩa là không có lớp mô phỏng hoặc tương thích. Về cơ bản, ý tôi là nếu Linux hỗ trợ nó cho dù bạn cần cài đặt bao nhiêu chương trình hay gói.
Jacob

2
Bất kỳ điều này có liên quan gì đến Ubuntu?
gạch dưới

2
@underscore_d Tôi không biết bạn đã nghe điều đó ở đâu, nhưng điều đó không đúng. Xem Có phải không chỉ có các câu hỏi trực tuyến cụ thể về Ubuntu không? Rất nhiều câu hỏi trên Ask Ubuntu áp dụng như nhau cho phần lớn các hệ thống GNU / Linux. Có thể ai đó sẽ tìm thấy một lý do chính đáng để xem xét câu hỏi này ngoài chủ đề, nhưng nếu vậy, nó sẽ không phải là điều đó. (Btw, điều này không có câu trả lời với thông tin cụ thể về Ubuntu. Đoạn thứ hai trong bài đăng của tôi là về các gói Ubuntu; nó mang đến một số, nhưng không phải tất cả, các bản phát hành khác.)
Eliah Kagan

Câu trả lời:


55

Nhiều khả năng bạn sẽ vấp ngã khi http://www.mono-project.com/

Như trang Giới thiệu về Mono nói:

Mono, nền tảng phát triển nguồn mở dựa trên .NET Framework, cho phép các nhà phát triển xây dựng các ứng dụng đa nền tảng với năng suất của nhà phát triển được cải thiện. Việc triển khai .NET của Mono dựa trên các tiêu chuẩn ECMA cho C #Cơ sở hạ tầng ngôn ngữ chung .

Các nền tảng được hỗ trợ bao gồm Linux.


2
Mono ... nghe có vẻ quen thuộc ... Oh yeah, đây là sự thống nhất dựa trên! Tôi không có ý tưởng rằng tôi có thể sử dụng nó một cách riêng biệt. Tôi nghĩ đó là một phần của Unity3d.
Jacob

41
Phiên bản mới nhất của Microsoft triển khai (.Net Core) cũng hỗ trợ Linux.
BlueRaja - Daniel Pflughoeft

6
Mono thực hiện .net tiêu chuẩn 2.0 (iirc) không chỉ cốt lõi.
casey

13
Đây sẽ là một câu trả lời tốt đẹp một vài năm trước đây. Bây giờ nó đã khá lỗi thời.
Konrad Rudolph

2
Nếu bạn đang sử dụng một phiên bản Ubuntu gần đây, xin vui lòng không sử dụng mono, nó có quá nhiều lỗi và triển khai kém, hãy sử dụng lõi .net. Nơi tôi làm việc, hầu hết mọi vấn đề chúng tôi gặp phải khi chạy các ứng dụng C # trên các bản phân phối linux cũ đều có thể được giải thích bằng câu lệnh: "vì đơn âm". Bộ lọc ngoại lệ bị mất dấu vết ngăn xếp, triển khai không đồng bộ là các trình bao bọc Task.Run, bộ nhớ bị rò rỉ trên toàn bộ ảnh và thiếu hỗ trợ valgrind để bạn thậm chí không thể chẩn đoán chính xác rò rỉ.
Lukazoid

72

Có, bạn có thể phát triển phần mềm trên Ubuntu, bản thân nó sẽ chạy trên Ubuntu, trong C #. Cả Mono.NET Core đều hỗ trợ các hệ thống GNU / Linux như Ubuntu. (Bạn có thể sử dụng chúng trên khác distro cũng vậy, như Debian, Raspbian, Fedora, CentOS, Arch, Gentoo, và vân vân.) Các công cụ trò chơi Unity3D cũng hỗ trợ Ubuntu, như bạn có thể biết. Unity3D nhúng Mono .

Một số gói cho Ubuntu, có thể cài đặt bằng trình quản lý gói của Ubuntu từ các nguồn phần mềm chính thức được cộng đồng hỗ trợ, được viết bằng C # và sử dụng Mono. Điều này bao gồm trình phát nhạc Banshee , ứng dụng đáng chú ý Tomboy , trình chỉnh sửa đồ họa raster Pinta và trình quản lý mật khẩu KeePass (kể từ phiên bản 2).

Hầu hết các trình soạn thảo văn bản, chẳng hạn như Gedit, Vim và Emacs, có tô sáng cú pháp cho C #. MonoDevelopVisual Studio Code là hai môi trường phát triển tích hợp phổ biến chạy trên Ubuntu và hỗ trợ phát triển C #.


10
Có lẽ cũng đề cập đến Rider, IDE dựa trên ý tưởng intellij cho C # có chứa tất cả các chức năng của ReSharper cho Visual Studio.
Wilbert

Bạn có thể muốn điều chỉnh câu trả lời này để nó ngụ ý rằng các bản phân phối khác của linux tồn tại. Vì họ cũng sẽ cung cấp hoặc hỗ trợ mono, bạn có thể muốn trung lập và hòa nhập hơn một chút.
dùng2066657

@ user2066657 Cảm ơn bạn đã gợi ý; Tôi đã chỉnh sửa. Tôi đã có ý làm rõ cách thức Mono và .NET Core không bị giới hạn đối với Ubuntu ("hệ thống GNU / Linux như Ubuntu"). Nhưng khi xem xét thêm, tôi nhận ra điều này có thể chưa rõ ràng đối với những độc giả chưa biết những gì tôi đang cố nói với họ. Vì vậy, tôi đã mở rộng phần đó. Tôi nhận ra rằng chỉnh sửa này có thể không làm bạn hài lòng: Tôi đã thực hiện nó bao quát hơn, nhưng không trung lập hơn. Thật hợp lý cho các bài đăng trên trang web này để nhấn mạnh Ubuntu. Phần giữa, đưa ra các ví dụ về các chương trình C # với các gói Ubuntu xuôi dòng, được cố tình tập trung vào Ubuntu.
Eliah Kagan

Nếu OP muốn hỏi về các hệ điều hành không phải Ubuntu, có lẽ họ đã hỏi trong Unix & Linux .
Ông Lister

@MrLister Có, đồng ý. Nhưng tôi nghĩ rằng một cái gì đó đã đạt được, và không có gì bị mất, bằng cách làm rõ tôi đã thêm. Mặc dù vậy, tôi không có kế hoạch trang bị lại toàn bộ bài viết. Ví dụ, tôi đã cân nhắc việc nói điều gì đó về phân phối MonoDevelop và Visual Studio Code rất dễ cài đặt và sử dụng, nhưng đã quyết định không làm như vậy, với lý do nó hơi phức tạp và cuối cùng sẽ thay đổi tông màu và tiêu cự (và độ dài! ) của bài viết.
Eliah Kagan

20
  1. Bây giờ bạn có thể phát triển các ứng dụng máy chủ trên Linux bằng C # ( .NET Core framework), giống như bạn có thể sử dụng Java hoặc Python. Theo ứng dụng máy chủ, ý tôi là ứng dụng web và ứng dụng dịch vụ web (REST) ​​là chủ yếu. Điều này làm cho một kết hợp hoàn hảo với các thùng chứa Linux ( Docker / K8) và các đám mây.
  2. Bạn có thể phát triển các ứng dụng máy tính để bàn với C # bằng cách sử dụng bộ công cụ Mono Framework (triển khai .NET) và bộ công cụ GTK # (GtkSharp) (trình bao bọc của GTK). Có rất nhiều dự án được phát triển trên đó. Khung này đã có một số kháng cự bởi một phần của cộng đồng Linux trong quá khứ. Một số bản phân phối và người dùng không muốn các ứng dụng Mono.
  3. Bạn có thể phát triển các trò chơi với Unity Engine bằng C # trên Linux. Unity Editor đang thử nghiệm trên Linux.

Vì vậy, vâng. Kiến thức về C # có thể rất hữu ích trên các hệ thống Linux hiện nay.


4
Bạn cũng có thể làm các ứng dụng máy tính để bàn trong .NET Core.
PmanAce

Bạn cũng có thể sử dụng Avalonia, một triển khai lại WPF đa nền tảng để thực hiện các ứng dụng di động + trên máy tính để bàn trên Mac + Linux + Windows. Cuối cùng là một bộ công cụ UI không rác!
Chris Bordeman

2

Giờ đây, bạn thậm chí có thể thực hiện các ứng dụng đa nền tảng (Linux, Mac, Windows, Android, iOS, UWP) dựa trên XAML bằng cách sử dụng .Net Core và một dự án mới có tên Avalonia. Avalonia đang trong giai đoạn Beta, nhưng hoạt động khá tốt. Nó tương tự như WPF, nhưng với một số cải tiến như kiểu CSS.

Tôi tin vào Linux Avalonia nhắm mục tiêu Gtk hiện tại, nhưng họ muốn chuyển sang một thứ khác. CNTT được đề cập trong video này, nhưng cá nhân tôi không thể hiểu những gì anh ấy nói: https://www.youtube.com/watch?v=WESJUJWBLJ0

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.