2009-02-24 62 views
31

Tôi bán ứng dụng C#/WPF (nhắm mục tiêu .net 3.0 tại thời điểm này) và mọi người tiếp tục hỏi tôi về phiên bản Mac. Ứng dụng là ứng dụng theo dõi thời gian với giao diện tốt, không có nhiều logic nghiệp vụ trong ứng dụng theo dõi thời gian nên hầu hết ứng dụng là GUI - viết lại chỉ GUI tương đương với việc viết lại toàn bộ ứng dụngChúng tôi có thể chạy ứng dụng C#/WPF trên Mac OS X không?

Tôi không có tài nguyên để viết lại ứng dụng hoặc duy trì hai cơ sở mã khác nhau, vì vậy tôi cần một cách để chạy cùng một mã trên máy Mac (tôi biết tôi sẽ phải gỡ lỗi và sửa đổi mã, ý tôi là là tôi có thể hỗ trợ chỉ một cơ sở mã, tôi không thể chia dự án thành các dự án Mac và Windows khác nhau - tôi chỉ không có thời gian để làm việc trên hai dự án).

Chuyển ứng dụng sang thư viện giao diện người dùng đa nền tảng sang ngôn ngữ lập trình khác hoặc Silverlight đều không liên quan - sẽ mất quá nhiều thời gian và tôi nghĩ mình sẽ nhận được nhiều doanh số hơn bằng cách đầu tư thời gian này vào các tính năng mới .

Có ai biết về một công cụ có thể chạy hoặc chuyển C#/WPF sang máy Mac không?

+0

Đây là một câu hỏi * cảnh báo tuyệt vời * "." –

Trả lời

11

Hoàn toàn không có cách nào bạn có thể chạy ứng dụng WPF chính thức trên máy Mac. Tôi thậm chí không chắc chắn nếu điều này là có thể trong Parallels. Điều tốt nhất bạn có thể làm là sử dụng Silverlight, trước đây có tên là "WPF/E" và chạy trên Macintosh.

+25

Uh Parallels là một máy ảo ... bất cứ thứ gì chạy trên các cửa sổ đều chạy trên nó khi nó chạy ... cửa sổ. –

+0

Tôi có một đơn giản chạy trên Parallels – Kalecser

+0

Tôi có một ứng dụng doanh nghiệp lớn là WPF và hoạt động theo song song. – Kelly

0

Không thể thực hiện được. Nhưng kể từ khi giao diện người dùng của bạn là trong WPF, những gì bạn có thể làm là biến XAML thành một thứ khác - ví dụ như GTK#. Tất nhiên, nếu bạn giống tôi và sử dụng rất nhiều chức năng .NET 3.5, điều đó sẽ không giúp bạn nhiều.

Một lý do nữa để duy trì giao diện người dùng của bạn bằng XML đơn giản, đơn giản để bắt đầu.

2

Bạn muốn có một tính năng mới (hỗ trợ toàn bộ nền tảng khác) và bạn không muốn nỗ lực trong đó. Rất tiếc, phần lớn thời gian sẽ không hoạt động.

Ngoài công cụ .NET cơ bản nhất với mono, tôi không nghĩ bạn có thể chạy ứng dụng WPF trên MacOSX.

Nếu bạn nghĩ rằng bạn có thể kiếm nhiều tiền hơn bằng cách thu hút người dùng máy Mac. Bạn có thể xem xét sử dụng các phương pháp trình bày khác. Do 'đầu tư' hiện tại của bạn, tôi sẽ thử dùng Silverlight (vâng, tôi đã đọc ý kiến ​​của bạn về việc không làm như vậy). Một tùy chọn khác có thể là Adobe AIR/Flex.

Nếu bạn chuyển ứng dụng theo cách này. Bạn có thể duy trì một codebase đơn .. một mã chạy trên cả hai nền tảng.

Nếu bạn muốn dành nhiều thời gian hơn cho các tính năng mới trong cơ sở mã hiện tại của mình: hãy bỏ qua người dùng Mac.

5

Chúng tôi đang ở trong tình huống tương tự. Chúng tôi đã có một dự án Windows đang hoạt động và muốn có một phiên bản Mac.

Sản phẩm của chúng tôi nằm trong hai phần, một ứng dụng .Net, ứng dụng chiếu khác của Giám đốc.

Ứng dụng Giám đốc phải dễ dàng, nền tảng chéo và tất cả? Vâng không, nó hiếm khi là dễ dàng, chúng tôi đã kết thúc với hai phiên bản của tập tin nguồn đạo diễn.

Tải ứng dụng .Net đang chạy yêu cầu bằng Mono cho công cụ cơ bản, hoạt động tốt cho chúng tôi vì chúng tôi chỉ thực sự là mảng ghép số byte thực sự. Giao diện người dùng trên mặt khác, chúng tôi đã phải viết lại trong ca cao.Chi phí cho chúng tôi gần như nhiều như việc tạo ra phiên bản Windows, vì chúng tôi cũng phải học tất cả các thứ của Mac khi chúng tôi đi.

Kể từ đó, chúng tôi chỉ cập nhật phiên bản Windows.

+0

Đây là một câu chuyện mẫu hay cho nhà phát triển mới theo ý kiến ​​của tôi. Chọn công cụ có thể được sử dụng trên nhiều nền tảng. Nếu không, bạn sẽ chỉ tìm thấy tự của bạn trong một dưa khi yêu cầu thay đổi và execs muốn sản phẩm trên Mac hoặc Linux cũng. – Kaspar

5

Chúng tôi gặp sự cố tương tự. Chúng tôi đã viết một phiên bản Mac trong Silverlight 3 (hỗ trợ khá nhiều công cụ WPF .NET). Nó đã được sandboxed nhưng nếu đây không phải là một vấn đề, bạn có thể làm một số công cụ tốt đẹp. Codebase của chúng tôi bây giờ là trên WPF và Silverlight 3 và là như nhau, khi chúng tôi biên dịch nó tạo ra các ứng dụng SL3 và Desktop.

+1

Cảm ơn, điều này nghe có vẻ như một khả năng tốt (silverlight 3 không tồn tại khi tôi hỏi câu hỏi), bạn có sử dụng cùng một tệp xaml và cs trên cả hai nền tảng không? – Nir

-1

Thực ra, có một CrossOver cho bạn. Những người khác trả lời xem từ điểm của lập trình viên. Nếu tôi là bạn, tôi sẽ cài đặt CrossOver sau đó cài đặt .NET 3.5 bên trong CrossOver và vui vẻ chạy phần mềm WPF.

http://www.codeweavers.com/products/cxmac/

hoặc nếu bạn muốn có một giải pháp miễn phí (nhưng khó khăn hơn), hãy thử rượu.

http://davidbaumgold.com/tutorials/wine-mac/

+2

Đây là ý kiến ​​hay từ quan điểm của khách hàng - Tôi không biết liệu phần mềm của tôi có chạy dưới CrossOver hay không nhưng tôi biết một số người chạy phần mềm của tôi theo Parallels - nhưng - từ quan điểm của nhà cung cấp phần mềm (đặc biệt là với chi phí thấp phần mềm) Tôi không thể chỉ cài đặt CrossOver trên máy tính của khách hàng (đặc biệt khi CrossOver Pro đắt hơn phần mềm của tôi) – Nir

+0

Humm yea. : D sau đó thử Wine. http://davidbaumgold.com/tutorials/wine-mac/ – VOX

+0

Chỉ muốn làm rõ sự khác biệt giữa Parallels/VMWare và Wine/CrossOver. Parallels hoặc VMWare là một bộ giả lập phần cứng ảo có thể khởi động Windows. Chúng mô phỏng phần cứng. Bạn cần khởi động Windows (yêu cầu giấy phép Windows) và sau đó chạy phần mềm của bạn trên phần cứng mô phỏng đang chạy các cửa sổ. Wine/Cross over là về cái gì đó viết lại môi trường Windows trên Mac/Linux. Nó cung cấp cho chương trình của bạn mọi thứ mà chương trình của bạn mong đợi từ một hệ điều hành Windows. Và chương trình của bạn chạy ở tốc độ gốc mà không cần khởi động Windows cũng như không cần giấy phép. – VOX

4

Bạn có thể sử dụng Parallels. Tôi có phần mềm văn phòng của chúng tôi bằng văn bản trong C# và WPF và mọi người sử dụng nó trên Mac dưới Parallels tất cả các thời gian.

Lưu ý thêm, Parallels cho phép bạn chạy các ứng dụng Windows cạnh nhau với các ứng dụng Mac OSX, hiển thị trong cửa sổ riêng của chúng trên màn hình Mac. Nó cũng cho phép sao chép và dán và kéo và thả giữa các ứng dụng Mac và Windows.

1

Bạn có thể thử Nevron Open Vision. Nó tích hợp trong các dự án WPF, WinForms, Silverlight và MonoMac, Xamarin.Mac. Điều này không giống như chạy một ứng dụng WPF trên máy Mac, nhưng thay vào đó sẽ yêu cầu bạn phải mã hóa lại ứng dụng của bạn trên nền tảng NOV. Tuy nhiên một khi bạn làm điều đó ứng dụng của bạn (hoặc mô-đun) sẽ chạy trên tất cả các nền tảng này từ một cơ sở mã duy nhất. Một ví dụ điển hình về phương pháp này là Nevron Writer (một phần của Văn phòng Nevron). Nó chạy trên Windows, Silverlight và Mac từ một cơ sở mã đơn 100%.

[Tiết lộ: Tôi làm việc cho Nevron]

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