web-dev-qa-db-ja.com

Windowsストアアプリへの参照として.NETFramework DLLを追加する

National InstrumentsDAQから簡単な温度測定データを読み取りたいWindowsストアアプリプロジェクトに取り組んでいます。ただし、DAQのDLLライブラリは.NETFramework4.0形式であり、これをWindowsストアアプリプロジェクトへの参照として追加すると、次のエラーが発生します:"プロジェクトターゲット '。 NetFramework '、ファイル参照は' .NetCore '"を対象とします

ネットを検索したところ、Windowsストアアプリは別の.NETCoreまたはポータブルライブラリバイナリへの参照のみを使用する必要があり、完全な.NET4.0ライブラリを参照することはできません。似たような問題を抱えている人も多いと思いますので、ウォークアラウンドトリックはあるのでしょうか?

22
Zyberb

他の誰かが提供するライブラリの使用に固執していて、ポータブルバージョンを作成するようにロビー活動を試みても成功しない場合は、DLLをホストする場所を見つけて、通信するしかありません。それをホストしているものは何でも。たとえば、シナリオによっては、たとえばASP.NET Web APIベースのサービスを作成できる場合があります。このサービスは、完全な.NET Frameworkを使用できるため、DLLを使用できます。

明らかに、これは1つの問題を別の問題と交換します。Webサービスを実行できるマシンが必要になります。 (残念ながら、MicrosoftはWindowsストアアプリを実行しているのと同じマシンでそのWebアプリを実行することを公式にサポートしていないと思います。開発ボックスで動作させることはできますが、展開することはできません。 Windowsストア経由のWebアプリ自体。)

そして、ここには簡単な道はありません。HTTPサービスを介して必要なものすべてを公開するレイヤーと、それらのサービスを利用するためのクライアント側コードを作成する必要があります。また、サービスへのアクセスを保護する方法についても検討する必要があります。

サプライヤーに訴える方が簡単かもしれません...

理論的には、ライブラリがコア.NETプロファイル以外のものを使用していない場合は、ILDASMとILASMを使用してコードを逆コンパイルおよび再コンパイルし、その前にポータブルライブラリに変換できます。 。ただし、商用コードの場合、これはライセンス契約に違反する可能性が非常に高く、いずれの場合も機能しない可能性があります。

12
Ian Griffiths

「回避策」は、ポータブルライブラリとして必要なバージョンのライブラリを作成することです。これですべてです。あなたは単にしないでください完全なフレームワークを利用できます。

クラスライブラリをポータブルクラスライブラリに変換する際の難しさは、ライブラリの機能と、ライブラリが使用するBCLの領域に大きく依存します。

9
Jon Skeet