2017-05-06 77 views
1

這是一個非常基本的問題。可移植類庫可用於包含函數庫和無UI組件的簡單類嗎?僅適用於Xamarin的可移植類庫嗎?

是否可以編寫非UI類庫並在多個平臺上共享?

+0

是你甘蔗分享它,但它是有限的參考。我之前在Silverlight中使用過.net基礎應用程序沒有限制使用它和它的跨平臺 –

回答

1

便攜式類庫是否可用於包含函數庫和無UI組件的簡單類?

當然,雖然更現代的PCL替代品是.NET Core庫。 PCL在工具方面存在各種問題,並計算出您需要使用哪種配置文件:.NET Core模型更容易更簡單。 (已經有一些曲折和沿途曲折,與project.json等,但最終.NET核心SDK現已脫離,你會需要的Visual Studio 2017年用它來開發。)

是有可能編寫一個非UI類庫並在多個平臺上共享它?

絕對 - 這正是像Noda TimeJson.NET這樣的項目。 (免責聲明:我是野田時間的主要作者,所以顯然有偏見:)

這裏有一點微妙之處在於,可移植項目通常以NuGet包的形式分發,但NuGet中可以有多個不同的程序集包,針對不同的框架。例如,Noda Time 2.0的目標爲netstandard1.3net45 - netstandard1.3程序集不支持二進制序列化,或者不支持TimeZoneInfo作爲net45程序集。

1

「這是一個非常基本的問題。」

嗯,你其實列出了三個問題,對不對?我看到Jon Skeet在主體中友好地回答了這兩個問題。

所以我只專注於「僅適用於Xamarin的便攜式類庫?」

當微軟在推出.NET Framework 4.0之後提出PCL的想法時,他們的目標是在.NET Framework/Silverlight/Windows Phone等之間共享代碼。事實上,他們一開始就沒有考慮Xamarin。儘管他們肯定認識Mono和Xamarin。

PCL要求CLR支持可重定目標的類元數據,該元數據當時計劃用於.NET Framework 4.5及更高版本。 Microsoft確實將必要的位移回到.NET Framework 4.0,後來作爲補丁發佈。

可能在微軟的幫助下,Mono/Xamarin後來可以改進CLR實現,以便PCL組件可以被使用。他們甚至從微軟的幫助下發布Linux和Mac的PCL參考程序集,以便您可以針對它們編譯項目。

在初次發佈後添加了諸如「portable-net45 + netcore45 + MonoAndroid1 + MonoTouch1」之類的PCL配置文件,並且對NuGet也進行了類似的更改,Mono/Xamarin正式成爲.NET生態系統的一部分而他們實際上已在那裏多年)。

現在,你應該簡單地忘記PCL,並且擁抱.NET標準。這是新的方式,使用起來更簡單。

相關問題