2013-02-05 45 views
20

Tôi đang làm việc trên dự án ứng dụng cửa sổ cửa hàng nơi tôi muốn đọc dữ liệu đo nhiệt độ đơn giản từ DAQ của National Instruments. Tuy nhiên thư viện DLL cho DAQ có định dạng .NETFramework 4.0 và khi thêm này làm tham chiếu đến dự án cửa sổ ứng dụng cửa hàng của tôi, tôi nhận được lỗi sau: "Mục tiêu của dự án '.NetFramework' trong khi mục tiêu tham chiếu tệp '.NetCore'"Thêm .NET Framework DLL làm tham chiếu đến cửa sổ ứng dụng cửa hàng

Tìm kiếm trên mạng, tôi phát hiện ra rằng ứng dụng cửa sổ cửa hàng phải sử dụng tham chiếu đến một tệp nhị phân .NETCore hoặc Portable Library khác, nó không thể tham chiếu đầy đủ thư viện .NET 4.0. Tôi đoán có nhiều người có vấn đề tương tự, vì vậy tôi tự hỏi liệu có bất kỳ bước đi nào xung quanh các thủ thuật không?

Trả lời

12

Nếu bạn gặp khó khăn khi sử dụng thư viện do người khác cung cấp và nếu nỗ lực vận động để tạo ra phiên bản di động không thành công thì điều duy nhất bạn có thể làm là tìm một nơi khác để lưu trữ tệp DLL , và sau đó giao tiếp với bất cứ điều gì là lưu trữ nó. Ví dụ, đối với một số kịch bản, có thể viết, một dịch vụ dựa trên ASP.NET Web API, có thể sử dụng .NET Framework đầy đủ và do đó sẽ có thể sử dụng DLL.

Rõ ràng, điều này giao dịch một vấn đề cho một vấn đề khác: bây giờ bạn cần phải có một máy có thể chạy một dịch vụ web cho bạn. (Và thật không may, tôi tin rằng Microsoft không chính thức hỗ trợ chạy ứng dụng web trên cùng một máy đang chạy ứng dụng Windows Store. Bạn có thể làm cho nó hoạt động trên hộp dev của bạn, nhưng bạn sẽ không thể triển khai chính ứng dụng web thông qua Windows Store.)

Và không có đường dẫn dễ dàng ở đây - bạn sẽ phải viết một lớp hiển thị mọi thứ bạn cần thông qua dịch vụ HTTP và mã phía máy khách để sử dụng các dịch vụ đó. Và bạn cũng sẽ cần phải suy nghĩ về cách để bảo mật quyền truy cập vào dịch vụ.

Nó có thể dễ dàng hơn để biện hộ với nhà cung cấp của bạn ...

Về lý thuyết, nếu nó xảy ra như vậy mà thư viện không sử dụng bất cứ điều gì ngoài hồ sơ cá nhân cốt lõi NET, sau đó bạn có thể sử dụng ILDASM và ILASM để bỏ biên dịch và biên dịch lại mã, chuyển đổi nó thành một thư viện di động trước khi làm như vậy. Tuy nhiên, điều này có khả năng vi phạm thỏa thuận cấp phép của bạn nếu đó là mã thương mại và trong mọi trường hợp, rất có thể không hoạt động.

+0

Tôi chỉ muốn nói. Cảm ơn câu trả lời rõ ràng ngay cả khi nó là 3 năm trước đây. – jermey

9

Các "workaround" là để tạo ra một phiên bản của thư viện mà bạn muốn như một thư viện di động. Thats tất cả để có nó. Bạn chỉ cần không có sẵn khung làm việc đầy đủ.

Khó khăn liên quan đến việc chuyển đổi thư viện lớp sang thư viện lớp di động phụ thuộc rất nhiều vào thư viện làm gì và khu vực nào của BCL mà nó sử dụng.

+1

Cảm ơn bạn đã trả lời nhanh! Tôi đã nhìn vào thư viện lớp di động nhưng trong trường hợp này tôi không có quyền truy cập vào mã nguồn đầy đủ của Thư viện, chỉ cần các tập tin DLL. – Zyberb

+2

Làm cách nào để giải quyết vấn đề này và không chỉ là cách làm việc chính thức? – ken2k

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