2013-02-05 6 views
20

Pracuję nad projektem aplikacji sklepu Windows, w którym chcę odczytać proste dane pomiaru temperatury z DAQ National Instruments. Jednak biblioteka DLL dla DAQ jest w formacie .NETFramework 4.0 i kiedy dodaję to jako odniesienie do mojego projektu aplikacji sklepu Windows otrzymuję następujący błąd: "Projekt jest skierowany do" .NetFramework ", podczas gdy odniesienie do pliku jest" .NetCore ""Dodawanie biblioteki .NET Framework DLL jako odniesienia do aplikacji sklepu Windows

Poszukując sieci, dowiedziałem się, że aplikacja sklepu Windows musi odwoływać się tylko do innych bibliotek .NETCore lub Portable Library, nie może odwoływać się do pełnej biblioteki .NET 4.0. Wydaje mi się, że jest wiele osób, które mają podobne problemy, więc zastanawiam się, czy jest tam jakaś sztuczka?

Odpowiedz

12

Jeśli utkniesz w użyciu biblioteki dostarczonej przez kogoś innego, a jeśli próby ich lobbowania w celu wyprodukowania wersji przenośnej są mało prawdopodobne, to jedyną rzeczą, którą możesz zrobić, to znaleźć inne miejsce do hostowania biblioteki DLL. , a następnie komunikować się z tym, co go hostuje. Na przykład dla niektórych scenariuszy może być możliwe napisanie, powiedzmy, usługi opartej na API ASP.NET Web API, która będzie mogła korzystać z pełnego .NET Framework i tym samym będzie mogła korzystać z biblioteki DLL.

Oczywiście powoduje to jeden problem dla drugiego: trzeba teraz mieć maszynę, która może uruchomić usługę sieciową dla Ciebie. (I niestety, uważam, że Microsoft oficjalnie nie obsługuje uruchamiania tej aplikacji internetowej na tym samym komputerze, na którym działa aplikacja Windows Store. Być może uda się ją uruchomić do skrzynki dev, ale nie będzie można wdrożyć samą aplikację internetową za pośrednictwem Sklepu Windows.)

Nie ma tu łatwej ścieżki - musisz napisać warstwę eksponującą wszystko, czego potrzebujesz, za pośrednictwem usług HTTP, oraz kod po stronie klienta do korzystania z tych usług. Musisz także zastanowić się, jak zabezpieczyć dostęp do usługi.

może być łatwiej powoływać ze swojego dostawcy ...

Teoretycznie, jeśli zdarza się tak, że biblioteka nie używa niczego poza rdzeń profilu .NET, a następnie można użyć ILDASM i ILASM aby zdekompilować i ponownie skompilować kod, przekształcając go przedtem w przenośną bibliotekę. Jest jednak prawdopodobne, że naruszy to twoją umowę licencyjną, jeśli jest to kod komercyjny, a w każdym razie najprawdopodobniej nie zadziała.

+0

Chcę tylko powiedzieć. Dzięki za jasną odpowiedź, nawet jeśli jest to 3 lata temu. – jermey

9

W „obejście” jest stworzenie wersji biblioteki chcesz jako przenośny biblioteki. To wszystko. Po prostu , nie mają pełne ramy dostępne.

Trudność związana z konwersją biblioteki klas do przenośnej biblioteki klas zależy w dużej mierze od tego, co robi biblioteka i od obszarów wykorzystywanej przez niego biblioteki BCL.

+1

Dzięki za szybką odpowiedź! Zajrzałem do przenośnej biblioteki klas, ale w tym przypadku nie mam dostępu do pełnego kodu źródłowego biblioteki, tylko plik DLL. – Zyberb

+2

Jak to jest "obejście", a nie tylko oficjalny sposób robienia rzeczy? – ken2k

Powiązane problemy