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