มีความรู้เกี่ยวกับการใช้งาน C # ในระบบ Linux หรือไม่?


44

ฉันรู้ C # และฉันต้องการสลับระหว่างระบบและใช้ Linux ฉันสามารถใช้ C # เพื่อสร้างแอปพลิเคชั่นที่ทำงานบน Linux ได้หรือไม่? ฉันควรทำอย่างไรเพื่อใช้ความรู้ของ C # ในระบบ Linux

โปรดทราบว่าฉันมีความเชี่ยวชาญใน Unity3D แต่ฉันยังต้องการสร้างแอปพลิเคชัน Linux โดยใช้ C #


1
KerbalSpaceProgram เขียนด้วย Unity และทำงานบน Win / Mac / Linux ปลั๊กอิน / Mods to KSP เขียนด้วยภาษา C # และสามารถพัฒนาบน Win, Mac หรือ Linux ตอนนี้ฉันใช้ Mac เป็นหลักแทนที่จะใช้ Linux สำหรับ $ REASONS แต่ฉันพัฒนา KSP mod บนแพลตฟอร์มนั้นใน C # ไม่ใช่ windows ฉันจะเขียนโค้ด C # แบบสแตนด์อโลนด้วยการทดสอบ xUnit นอก KSP ในไม่ช้าและมันจะเหมือนกับการพัฒนาอื่น ๆ แต่ฉันจะต้องเรียกใช้ภายใต้โมโน MechJeb มีตัวอย่าง Makefile ที่สร้างขึ้นบน Mac + Linux: github.com/MuMech/MechJeb2/blob/master/Makefile (ต้องใช้ DLL ของเกม KSP เพื่อเชื่อมโยง)
lamont

3
C # การใช้งานมักจะไม่ทำงานโดยกำเนิดที่ใดก็ได้
หยุดทำร้ายโมนิก้า

@ OrangeDog ฉันรู้ว่าแม้ใน Windows คุณจะต้องติดตั้งกรอบ. Net ถ้าฉันพูดว่า "ดั้งเดิม" ฉันหมายความว่าไม่มีเลเยอร์การจำลองหรือความเข้ากันได้ โดยทั่วไปแล้วฉันหมายถึงว่าหาก Linux รองรับไม่ว่าคุณจะต้องติดตั้งโปรแกรมหรือแพ็คเกจจำนวนเท่าใด
Jacob

2
สิ่งใดที่เกี่ยวข้องกับอูบุนตู
underscore_d

2
@underscore_d ฉันไม่รู้ว่าคุณได้ยินที่ไหน แต่มันไม่เป็นความจริง ดูคำถามในหัวข้อ“ ไม่เฉพาะอูบุนตูโดยเฉพาะ” หรือไม่? หลายหลายคำถามเกี่ยวกับอูบุนตู Ask ใช้กับส่วนใหญ่ของระบบ GNU / Linux บางทีใครบางคนอาจหาเหตุผลที่เป็นไปได้ที่จะพิจารณาคำถามนอกหัวข้อนี้ แต่ถ้าเป็นเช่นนั้นมันจะไม่เป็นเช่นนั้น (Btw นี้ไม่ได้มีคำตอบที่มีข้อมูล Ubuntu เฉพาะวรรคสองของโพสต์ของตัวเองเป็นเรื่องเกี่ยวกับแพคเกจ Ubuntu มันดำเนินไปยังบางส่วน แต่ไม่ทั้งหมด distros อื่น ๆ ..)
Eliah Kagan

คำตอบ:


55

เป็นไปได้มากที่คุณจะสะดุดเมื่อhttp://www.mono-project.com/

ตามที่หน้าAbout Monoบอกว่า:

Mono แพลตฟอร์มการพัฒนาโอเพ่นซอร์สที่อิงกับ. NET Framework ช่วยให้นักพัฒนาสามารถสร้างแอพพลิเคชั่นข้ามแพลตฟอร์มพร้อมปรับปรุงประสิทธิภาพการทำงานของนักพัฒนา การดำเนินงาน .NET โมโนเป็นไปตามมาตรฐาน ECMA สำหรับC #และโครงสร้างพื้นฐานภาษาทั่วไป

แพลตฟอร์มที่สนับสนุนรวมถึงลินุกซ์


2
โมโน ... ฟังดูคุ้น ๆ ... ใช่แล้วนี่คือความสามัคคีบนพื้นฐาน! ฉันไม่รู้ว่าฉันจะใช้มันแยกกันได้ ฉันคิดว่ามันเป็นส่วนหนึ่งของ Unity3d
จาค็อบ

41
เวอร์ชันล่าสุดของการนำ Microsoft (.Net Core) ไปใช้ยังสนับสนุน Linux
BlueRaja - Danny Pflughoeft

6
Mono ใช้. net standard 2.0 (iirc) ไม่ใช่เฉพาะคอร์
casey

13
นี่คงเป็นคำตอบที่ดีเมื่อไม่กี่ปีที่ผ่านมา ตอนนี้มันค่อนข้างล้าสมัยไปแล้ว
Konrad Rudolph

1
@ KonradRudolph ล้าสมัยหรือไม่ แต่. NET core นั้นไม่จำเป็นต้องพึ่งพา NuGet โดยทั่วไปสำหรับโปรแกรมระดับการผลิตใด ๆ หรือมีทางเลือกอื่น ๆ
ใครบางคน

72

ใช่คุณสามารถพัฒนาซอฟต์แวร์บน Ubuntu ได้เองซึ่งจะทำงานบน Ubuntu ใน C # ทั้งMonoและ. NET CoreรองรับระบบGNU / Linuxเช่น Ubuntu (คุณสามารถใช้พวกมันในdistrosอื่น ๆ ได้เช่น Debian, Raspbian, Fedora, CentOS, Arch, Gentoo และอื่น ๆ ) เอ็นจิ้นเกม Unity3D รองรับ Ubuntu เช่นที่คุณรู้ Unity3D ฝังโมโน

แพคเกจจำนวนมากสำหรับ Ubuntu สามารถติดตั้งได้กับตัวจัดการแพคเกจของ Ubuntu จากแหล่งซอฟต์แวร์ที่สนับสนุนโดยชุมชนอย่างเป็นทางการเขียนใน C # และใช้ Mono ซึ่งรวมถึงเครื่องเล่นเพลงBanshee , Tomboy , Tomboy , Raster graphics editor Pinta , และตัวจัดการรหัสผ่านKeePass (ตั้งแต่เวอร์ชั่น 2)

โปรแกรมแก้ไขข้อความส่วนใหญ่เช่น Gedit, Vim และ Emacs มีการเน้นไวยากรณ์สำหรับ C # MonoDevelopและVisual Studio Codeเป็นสภาพแวดล้อมการพัฒนาแบบบูรณาการที่ได้รับความนิยมสองตัวที่ทำงานบน Ubuntu และสนับสนุนการพัฒนา C #


10
อาจจะพูดถึง Rider ซึ่งเป็น IDE ที่อิงตามแนวคิดของ Intellij สำหรับ C # ซึ่งมีฟังก์ชันการทำงานทั้งหมดของ ReSharper สำหรับ Visual Studio
Wilbert

คุณอาจต้องการที่จะปรับคำตอบนี้ดังนั้นมันก็หมายความว่ามีการแจกแจงอื่น ๆ ของลินุกซ์ เนื่องจากพวกเขาจะให้หรือสนับสนุนโมโนคุณอาจต้องการเป็นกลางมากกว่านี้เล็กน้อย
user2066657

@ user2066657 ขอบคุณสำหรับคำแนะนำ; ฉันแก้ไขแล้ว ฉันตั้งใจจะทำให้ชัดเจนว่า Mono และ. NET Core ไม่ได้ จำกัด อยู่ที่ Ubuntu ("ระบบ GNU / Linux เช่น Ubuntu") แต่ในการพิจารณาต่อไปฉันรู้ว่านี่อาจไม่ชัดเจนสำหรับผู้อ่านที่ไม่ทราบว่าฉันพยายามบอกอะไร ดังนั้นฉันจึงขยายส่วนนั้น ฉันรู้ว่าการแก้ไขนี้อาจไม่เป็นที่พอใจคุณ: ฉันได้ทำให้มันครอบคลุมมากขึ้น แต่ไม่ได้เป็นกลางมากขึ้น มันสมเหตุสมผลสำหรับการโพสต์ในเว็บไซต์นี้เพื่อเน้นอูบุนตู ส่วนที่อยู่ตรงกลางให้ตัวอย่างของโปรแกรม C # ที่มีแพ็คเกจ Ubuntu แบบดาวน์สตรีมโดยเน้นที่อูบุนตู
Eliah Kagan

หาก OP ได้อยากจะถามเกี่ยวกับการที่ไม่ Ubuntu ระบบปฏิบัติการที่พวกเขาอาจจะได้ถามในUnix และ Linux
Mr Lister

@MrLister ใช่ตกลง แต่ฉันคิดว่าสิ่งที่ได้รับและไม่มีอะไรหายไปโดยการชี้แจงที่ฉันได้เพิ่ม แต่ฉันไม่ได้วางแผนที่จะโพสต์กระทู้ใหม่ทั้งหมด ตัวอย่างเช่นฉันคิดว่าจะพูดว่า distros MonoDevelop และ Visual Studio Code นั้นง่ายต่อการติดตั้งและใช้งานได้ง่าย แต่ตัดสินใจที่จะทำเช่นนั้นเพราะมันค่อนข้างซับซ้อนและจะเปลี่ยนโทนและโฟกัส (และความยาว! ) ของโพสต์
Eliah Kagan

20
  1. ตอนนี้คุณสามารถพัฒนาแอปพลิเคชันเซิร์ฟเวอร์บน Linux โดยใช้ C # ( . NET Framework Framework) เช่นคุณสามารถใช้ Java หรือ Python โดยแอปพลิเคชันเซิร์ฟเวอร์ฉันหมายถึงแอปพลิเคชันเว็บและบริการเว็บ (REST) ​​เป็นส่วนใหญ่ สิ่งนี้ทำให้การจับคู่ที่สมบูรณ์แบบกับคอนเทนเนอร์ Linux ( Docker / K8s) และคลาวด์
  2. คุณสามารถพัฒนาแอปพลิเคชันเดสก์ท็อปด้วย C # โดยใช้โมโนเฟรมเวิร์ก (การใช้งาน. NET) และชุดเครื่องมือ GTK # (GtkSharp) (wrapper of GTK) มีหลายโครงการที่พัฒนา เฟรมเวิร์กนี้มีความต้านทานบางส่วนโดยชุมชน Linux ในอดีต การกระจายและผู้ใช้บางคนไม่ต้องการแอปพลิเคชันโมโน
  3. คุณสามารถพัฒนาเกมด้วย Unity Engine โดยใช้ C # บน Linux Unity Editor ทดลองบน Linux

ใช่. ความรู้เกี่ยวกับ C # จะมีประโยชน์มากในระบบ Linux ในปัจจุบัน


4
คุณยังสามารถทำแอพพลิเคชันเดสก์ท็อปใน. NET Core
PmanAce

2

คุณสามารถทำได้แม้กระทั่ง XAML ที่ใช้แพลตฟอร์มส่วนหน้า (Linux, Mac, Windows, Android, iOS, UWP) โดยใช้. Net Core และโครงการใหม่ที่เรียกว่า Avalonia Avalonia เป็นรุ่นเบต้า แต่ตอนนี้ใช้ได้ดีทีเดียว มันคล้ายกับ WPF แต่มี CSS บางอย่างเช่นการปรับปรุงการจัดแต่งทรงผม

ฉันเชื่อใน Linux Avalonia ตั้งเป้าหมายที่ Gtk แต่พวกเขาต้องการย้ายไปใช้อย่างอื่น มีการพูดถึงในวิดีโอนี้ แต่ส่วนตัวฉันไม่เข้าใจสิ่งที่เขาพูด: https://www.youtube.com/watch?v=WESJUJWBLJ0

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.