2011-01-06 28 views
12

Tôi có một giải pháp chứa cả giải pháp Silverlight 4 và WPF 4. Một là phiên bản web của ứng dụng và một là phiên bản dành cho máy tính để bàn.Cách tốt nhất để chia sẻ mã giữa WPF và Silverlight

Cả hai dự án đều có các lớp và giao diện miền tương tự và cả truy cập vào đám mây để lưu trữ và các nội dung khác.

Tôi muốn tạo một giao diện phổ biến và lớp học dự án, vì vậy tôi tạo ra một thư viện lớp, nhưng bạn sẽ không biết nó, Silverlight không thể thêm một tham chiếu đến một thư viện lớp. Vì vậy, tôi đã tạo ra dự án phổ biến như một thư viện Silverlight Class, nhưng khi tôi tham khảo mà từ dự án WPF tôi nhận được cảnh báo:

Warning The project 'Interface.Common.Silverlight' cannot be referenced. The referenced project is targeted to a different framework family (Silverlight)

và tôi thậm chí có lỗi runtime lớp tải khi tôi sử dụng bất kỳ lớp từ thư viện mà vì không thể tìm thấy "System.Windows khi chạy"

Tôi muốn chia sẻ mã giữa hai dự án, làm thế nào điều này có thể đạt được một cách rõ ràng?

Nhờ sự giúp đỡ bạn có thể cho

+1

MSDN - Mã chia sẻ giữa Silverlight và WPF: http://msdn.microsoft.com/en-us/library/ff921109(v=pandp.40).aspx –

+0

cảm ơn , Tôi đang làm điều này bây giờ, nhưng vẫn còn có rất nhiều câu hỏi ... chẳng hạn như bạn có thể chia sẻ mã truy cập Azure giữa SL và WPF? – Mark

+2

Người tìm kiếm chú ý! Xem [Thư viện lớp học di động] (http://msdn.microsoft.com/en-us/library/gg597391.aspx), hiện được hỗ trợ trong .NET 4.0! – Will

Trả lời

7

Tạo hai dự án song song một cho WPF và một cho Silverligth. Đối với một trong các dự án, hãy thêm các tệp dưới dạng liên kết thay vì tệp.

Tôi đã làm thành công này cho Microsoft Silverlight Analytics Framework với một cơ sở mã cho Silverlight 4, WPF, và Windows Phone 7.

+0

để tạo hai dự án Common.Interface (Common.Interface.SL và Common.Interface.WPF) và các tệp trong một trong số này (cái nào?) Sẽ là liên kết thay vì tệp thực? Điều này đạt được điều gì? – Mark

+0

Trong dự án -> Thêm mục hiện có thông báo mũi tên thả xuống bên cạnh nút Thêm. Tải xuống Bộ công cụ MvvmLight để biết ví dụ về chia sẻ mã giữa các dự án Sliverlight và WPF bằng cách sử dụng các tệp C# được liên kết: http://mvvmlight.codeplex.com/ –

+0

Vâng, đây là phần tôi thấy hầu hết mọi người đang làm. Nó không quan trọng dự án nào có các tệp và có "mục được liên kết". Sau đó, nếu bạn có mã chỉ nên là một nền tảng, nó có thể chỉ trong một dự án, và nếu một lớp chỉ khác một chút, bạn có thể làm những thứ như #ifdef SILVERLIGHT, hoặc có một lớp một phần với một phương thức/thuộc tính/v.v. được định nghĩa khác nhau trong dự án của mỗi nền tảng trong một phần khác của cùng một lớp. –

0

gì về mã chia sẻ XAML với Silverlight và WPF

0

Tạo một dự án "Portable" . có thể được tham chiếu từ cả WPF và Silverlight

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