TL; DR: các tùy chọn hiện nay để chạy giải pháp VS2015 trên Linux là gì?Chạy ứng dụng .NET trong Linux vào năm 2015
Tôi có ứng dụng .NET chạy tốt trong Windows và đã nhận được yêu cầu chuyển nó sang Linux. Tôi đã cố gắng rất nhiều để hiểu những gì nó có nghĩa là ngày hôm nay trong năm 2015 nhưng tôi thực sự bối rối với tất cả các bài viết cũ trỏ đến Mono và các bài viết mới nói về vNext (và vẫn đề cập đến Mono). Ngoài ra tôi có nền tảng ổn định với .NET nhưng tôi không biết nhiều về Linux nói chung ...
Tôi đã làm theo hướng dẫn gần đây và quản lý để biên dịch và chạy ứng dụng bảng điều khiển Hello World trong Linux. Điều đó đòi hỏi một số cài đặt các thứ tôi không biết, bao gồm Mono, và sau đó chạy một số lệnh "k" (kpm restore, kpm build, k run). Tuy nhiên bây giờ tôi không biết làm thế nào để chuyển sang kịch bản trường hợp thực tế của tôi.
tôi có một giải pháp VS2015 trong đó có rất nhiều dự án nhưng chỉ có 4 trong số đó đáng nói ở đây: - CommonStuff - ServiceCore - ServiceWindows/ServiceConsole
Tất cả các mã trong dự án ServiceCore (thư viện lớp) , bản thân nó có một tham chiếu đến CommonStuff (một thư viện lớp khác). ServiceWindows là một dự án dịch vụ Windows mà chỉ đơn giản gọi các chức năng chính của ServiceCore, và ServiceConsole làm điều tương tự nhưng trong một ứng dụng giao diện điều khiển (vì lý do gỡ lỗi, vì nó không thể gỡ lỗi một dự án dịch vụ Windows từ Visual Studio).
Cả hai CommonStuff và ServiceCore bao gồm rất nhiều thư viện .NET cũng như một số dll của bên thứ ba. Tuy nhiên, không có mã cụ thể của Windows, không có thứ pinvoke hoặc funky.
Nếu chúng ta xem ServiceConsole để trở thành ứng dụng tôi muốn chạy trên Linux - tôi cần phải làm gì để làm cho nó xảy ra? Biên dịch Hello World là một điều nhưng bây giờ, với tất cả các tài liệu tham khảo tiếng Pháp ... Tôi không biết bắt đầu từ đâu. Ngoài ra, tôi thậm chí không thể có mã được biên dịch trong Linux (mã độc quyền) vì vậy tôi cần mã được biên dịch trong Windows và dll/exe được biên dịch để chạy trực tiếp trong Linux - đó là điều có thể? Tôi đã thấy một vài bài viết nói rằng Mono có thể chạy các ứng dụng được biên dịch, nhưng mỗi và mọi giai điệu Mono tôi đã thấy bắt đầu bằng việc biên dịch. Ngoài ra tôi không chắc chắn vNext này là gì. Tôi đọc công cụ về khả năng chạy mã trong Linux nếu nó được nhắm mục tiêu cho .net 6 ... nhưng tôi không biết ý nghĩa của nó.
Tôi sẽ đánh giá rất cao nếu ai đó có thể dành chút thời gian để giải thích chi tiết những lựa chọn hiện tại và nếu nó thực tế cho một ứng dụng chuyên nghiệp hoặc nó chỉ tốt cho Hello World.
Cảm ơn
EDIT: Ok như vậy có vẻ như tôi có thể biên dịch mã của tôi trong VS và bằng cách nào đó chạy nó trên Linux sử dụng Mono - làm thế nào?
_ "Dịch vụ Windows [...] không có gì đặc trưng cho Windows" _ không tính toán. Xem [Cách di chuyển ứng dụng .NET Service sang Linux bằng cách sử dụng mono?] (Http://stackoverflow.com/questions/637948/how-to-migrate-a-net-windows-service-application-to-linux- sử dụng-mono). vNext hoặc ASP.NET 5 là điều tiếp theo cho các ứng dụng web, vì vậy không liên quan đến tình huống của bạn. Tôi không thể giúp bạn nhiều hơn thế, tôi đã không cố gắng chạy .NET trên Mono ngoài "Hello, World!" cũng. – CodeCaster
Tôi mã .Net/Mono hướng dịch vụ ứng dụng trên OS-X và triển khai kết quả CILs cho Windows và Linux nền tảng tất cả các thời gian ... Câu hỏi này là như vậy chung rằng nó không thể được trả lời trực tiếp. Là Mono một nền tảng CLR khả thi để chạy các ứng dụng xplat, vâng ... Ngoài 'Hello World', vâng, các ứng dụng chuyên nghiệp? vâng, tất nhiên, vv .. Câu trả lời thực sự sẽ dựa trên ứng dụng của bạn, mã của bạn, trải nghiệm người dùng yêu cầu, yêu cầu nền tảng, v.v. Bạn đã nói rằng bạn không sử dụng InterOp không được quản lý, nhưng mã cụ thể của Windows, nếu có, Dịch vụ của bạn đang sử dụng, v.v ... – SushiHangover
Tôi không nghĩ rằng nó quan trọng đến mức nó là một dịch vụ Windows. Nó chỉ là một số mã mà tôi chạy như một dịch vụ Windows, nhưng như tôi đã nói, nó có thể được chạy như một ứng dụng giao diện điều khiển. Cụ thể hơn, mục đích của ứng dụng là để chờ đợi các yêu cầu (nhận được thông qua SignalR, do đó, websockets hoặc polling dài) và sau đó kết nối với một số cơ sở dữ liệu (ví dụ mysql, được quản lý bởi dlls bên thứ 3) để gửi dữ liệu đến một webservice của chúng ta. Điều duy nhất Windows đặc trưng là ghi vào nhật ký Windows nhưng tôi có thể thay thế dễ dàng bằng cách ghi vào một số tệp cho Linux. – Nicolas