2017-10-12 7 views
1

私たちは、.Net 3.5から4.6のもので書かれた古典的な.Netライブラリの膨大なコレクションを持っています。これには、WCF、Web API、Asp.Net、WPF、およびWindowsフォームを使用して、さまざまな.Netソリューションで使用する、当社のコアビジネスロジックおよびデータモデルクラスが含まれます。そのため、UWPアプリケーションの作成に目を向けると、これらの.Net dllの一部を再利用する必要があります。UWPアプリケーションが従来の.Net dllを参照するPCLを使用できないのはなぜですか?

私は、.NET 4.5 dllの1つを参照するポータブルクラスライブラリ(PCL)を作成しました。私は、4.5クラスのいずれかを実装PCLでクラスを作成しました:

using DODServiceLib.Models; 

namespace PortableClassLibrary 
{ 
    public class UtilityStats : ProcessorStats 
    { 
    } 
} 

ProcessorStatsは、4.5 DLLからDODServiceLib.Modelsです。私のUWPのアプリで

、私はPortableClassLibraryは、PCLへのプロジェクト参照を追加し、背後にある自分のコードにusingステートメントを追加しました私は私の.NETクラスの実装を使用する必要があるところ、これは次のようになります。

using System; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
using System.Net.Http; 
using System.Threading.Tasks; 
using PortableClassLibrary; 

namespace HelloWorld 
{ 
    public sealed partial class MainPage : Page 
    { 
     public MainPage() 
     { 
      this.InitializeComponent(); 
     } 

     private void Button_Click_2(object sender, RoutedEventArgs e) 
     { 
      var utilityStats = new UtilityStats(); 
     } 
    } 
} 

ソリューションを構築するとき、私はUWPのHelloWorldアプリに対して、これらのエラーを取得:それだけでPCLを使用している場合

Type universe cannot resolve assembly: DODServiceLib, Version=20.17.7.28, Culture=neutral, PublicKeyToken=null. 
Cannot resolve Assembly or Windows Metadata file 'DODServiceLib.dll' 

はなぜUWPアプリは、.NET DLL(DODServiceLib)への参照を探していますか?

古典的な.Netライブラリの「ラッパー」としてこのようなPCLを使用することはできませんか?

答えて

1

なぜUWPアプリケーションは.Net DLL(DODServiceLib)への参照をPCLのみを使用しているのですか?

これは正常です。あなたのPCLはそのDLLに参照を追加していますので、確かにこのdllを探します。しかし、このdllはUWPのサポートではありません。それが例外を受ける理由です。 UWPプロジェクトは、ユニバーサルWindowsクラスライブラリ、ポータブルライブラリ、またはWindowsランタイムコンポーネントを参照できます。これは、古典的な.NETライブラリをラップするためにPCLを使用できるわけではありません。まったく別のことです。あなたがしなければならないことは、.NETライブラリのすべてのコードをPCLにコピーしてから、適合しないすべてのコードを削除/置換することです。

+0

問題は、.NETライブラリがEntity Frameworkを使用してSQL Serverデータベースに接続していて、PCLでEFを動作させることができなかったことです。私はPCLにNugetを介してEFを追加することができますが、Entity Data Modelクラスはadd-new-itemsで利用できません。その後、System.DataがPCLでサポートされていないとの別の記事を見つけたので、少なくともデータアクセスに関する限り、PCLは私の意見では役に立たない。 – Neville

+1

Windows 10 Fall Creators Update(ビルド16299)UWPアプリケーションは、標準のNETクラス(System.Data.SqlClient)を介して直接SQL Serverにアクセスできるようになりました。これらのAPIを使用して、PCLで独自のSQLヘルパクラスを作成できます。詳細は、この[スレッド](https://stackoverflow.com/questions/32885735/how-to-connect-to-sql-server-database-from-a-windows-10-uwp-app)を参照してください。 – Bite

関連する問題