2015-12-01 17 views
9

我想創建一個包含WebAPI(使用ASP.NET 5)和一個使用UWP應用程序的通用對象(主要是DTO)的類庫。但是,我還沒有想出如何創建類庫,以便可以從其他項目中引用它。從UWP和ASP.NET 5引用一個類庫

我迄今爲止嘗試:
首先,我嘗試了類庫(包),它可以在網絡被發現。這種類型的文庫可以從ASP.NET項目中引用沒有問題,而是試圖從UWP項目中引用它的時候,我得到以下信息:

A reference to 'ClassLibrary1' could not be added. 

接下來,我嘗試了類庫(視窗Universal),可在下找到Windows> Universal。這可以很容易地從UWP項目引用,而是試圖從ASP.NET引用它的時候,我得到:

The following projects are not supported as references : 

    - The project ClassLibrary2 has a target framework that is incompatible or has version higher than the current project and cannot be referenced. 

所以:我怎樣才能創建一個可以同時在一個ASP.NET中使用的類庫5項目一個UWP項目?

回答

7

你需要的是一個可移植的類庫(在Windows下)。

PCL

既然你只靶向ASP.NET 5和Windows 10,您可以限制平臺,只有這兩個,但在支持更多的平臺上有沒有「錯誤」(它可以限制多少儘管共享的API可用)。

PCL 2

+0

謝謝,這隻要ASP的作品很好。NET 5只針對'dnxcore50'(從長遠來看,這是我的目標)。然而,在定位'dnx451'的時候,我得到'MScorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'和'System.Runtime,Version = 4.0'這兩個類型'IEnumerable ' .20.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'\t' - 我能做些什麼? –

+1

它顯然是[已知問題](https://github.com/dotnet/coreclr/issues/1228)與他們正在工作的某些類型的多個版本。你可以嘗試尋找project.json中的引用,就像他們在這個問題中所做的一樣。 – Bart

3

.Net Standard class library應該被認爲是繼承了便攜類庫。兩者都旨在促進在不同.Net平臺之間共享代碼(在這種情況下,模型對象/ DTO)。

在Visual Studio 2017中,您現在可以選擇.Net標準類庫模板。這個類庫可以下注以設定不同版本的.Net標準。您應該針對的.Net標準版本取決於您希望在哪些.Net平臺之間共享代碼。

對於這個特定的問題,我們希望支持通用Windows平臺(UWP)應用程序和Asp.Net核心應用程序。因此,我們應該參考此compatibility table來確定將支持這兩個平臺的.Net標準的版本。在這種情況下,它將是.Net Standard 1.4。一旦將類庫設置爲定位.Net標準1.4,就可以從UWP和Asp.Net核心項目中添加對類庫的引用。

爲了更好地理解什麼的.Net標準以及它是如何有利於代碼共享,我建議您查看以下內容:

  1. Introducing .NET Standard
  2. Video Series on .NET Standard(這是特別好)
  3. .Net Standard FAQ
相關問題