我們有大量的經典.Net庫,它們都是用.Net 3.5到4.6編寫的。這包括我們使用WCF,Web API,Asp.Net,WPF和Windows Forms在各種.Net解決方案中使用的核心業務邏輯和數據模型類。因此,當考慮創建UWP應用程序時,我們需要重用其中一些.Net dll。爲什麼UWP應用程序不能使用引用經典.Net dll的PCL?
我創建了一個可移植的類庫(PCL),其中我引用了我們的.NET 4.5 dll中的一個。然後,我在實現4.5類之一的PCL創建的類:
using DODServiceLib.Models;
namespace PortableClassLibrary
{
public class UtilityStats : ProcessorStats
{
}
}
ProcessorStats是從4.5 DLL,DODServiceLib.Models。
在我UWP的應用程序,我添加了一個項目參照PCL,PortableClassLibrary並添加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應用程序:
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)的參考,當它僅使用PCL?
我可以不使用這樣的PCL作爲經典.Net庫的「包裝器」嗎?
問題是,我的.Net庫使用實體框架連接到SQL Server數據庫,我無法使EF在PCL中工作。我可以通過Nuget將EF添加到PCL,但是在添加新項目下沒有實體數據模型類。然後發現另一篇文章說明System.Data不被PCL支持,因此在我看來,PCL是無用的,至少就數據訪問而言。 – Neville
Windows 10秋季創作者更新(構建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