Q
在便攜式類庫
1
A
回答
4
不幸的是編譯器不會爲你做這樣的檢查。
我嘗試使用System.Data
命名空間中的類創建一個.NET 4類庫,它顯然不兼容PCL。我從用於.NET 4.5,Windows Store和Windows Phone 8的可移植類庫項目中引用和使用它沒有任何問題。甚至更多:我設法從Windows應用商店應用程序中引用此可移植庫,編譯並運行它。當然,運行Windows應用程序認證套件顯示,驗證失敗。
提前檢測這些問題的最佳方法是通過NuGet添加參考,它會檢查包是否支持您的目標配置文件。當然這需要NuGet包以特殊方式進行準備。
對於某些第三方庫,這樣的軟件包可能不可用,但它可能仍然是PCL兼容的。在這種情況下,我建議你下載源代碼,並嘗試使用正確的目標來創建一個可移植的類庫。這樣,只要編譯器只引用系統程序集,編譯器就會警告你兼容性問題。
2
在MoreLinq的特殊情況下,該庫很容易轉換爲便攜式類庫。
- 創建一個可移植類庫項目,該項目針對.NET Framework 4及更高版本,Silverlight 4及更高版本,Windows Phone 7及更高版本以及Windows應用商店應用。
- 添加到PCL中包含的主要MoreLinq庫中的所有文件,除了ToDataTable.cs和ToHashSet.cs。
- 將以下條件編譯符號添加到PCL項目:
NO_SERIALIZATION_ATTRIBUTES
,NO_EXCEPTION_SERIALIZATION
,NO_HASHSET
,NO_TRACING
。 修改私有方法
ExceptByImpl
在ExceptBy.cs使用Dictionary<,>
而不是HashSet<>
時爲PCL建:private static IEnumerable<TSource> ExceptByImpl<TSource, TKey>( this IEnumerable<TSource> first, IEnumerable<TSource> second, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> keyComparer) { #if !NO_HASHSET HashSet<TKey> keys = new HashSet<TKey>(second.Select(keySelector), keyComparer); foreach (var element in first) { TKey key = keySelector(element); if (keys.Contains(key)) { continue; } yield return element; keys.Add(key); } #else var keys = second.ToDictionary(keySelector, keyComparer); foreach (var element in first) { TKey key = keySelector(element); if (keys.ContainsKey(key)) { continue; } yield return element; keys.Add(key, element); } #endif
}
當然,這不是一個直接的答案你的問題,但希望它是有用的,但你的具體問題。
相關問題
- 1. 便攜式類庫
- 2. 便攜式類庫反射
- 3. 便攜式類庫,XmlAnyElementAttribute
- 4. MvvmCross便攜式類庫 - System.Net.ServicePointManager
- 5. 在VS2015中創建便攜式類庫
- 6. 在便攜式類庫中包含XPathSelectElement
- 7. Netstandard庫 - 在便攜式類中引用
- 8. 便攜式PySide庫?
- 9. Socket.IO庫Xamarin.Forms(便攜式類庫)
- 10. 共享[DataContract]類的便攜式類庫
- 11. 便攜式類庫部分類
- 12. 便攜式類庫的.Net和單
- 13. 便攜式類庫 - 目標的Silverlight 5
- 14. 便攜式類庫(PCL)貢獻 - 加密
- 15. .NET便攜式類庫和UDP支持
- 16. 綁定重定向便攜式類庫
- 17. 沒有Xamarin便攜式類庫
- 18. Xamarin便攜式類庫問題
- 19. 便攜式類庫WebResponse StatusCode缺少
- 20. 便攜式類庫System.Object錯誤
- 21. 便攜式類庫中的sqlite
- 22. MonoDroid和MonoTouch的便攜式類庫
- 23. XmlTextReader的是便攜式類庫支持?
- 24. 便攜式類庫中的SqlConnection
- 25. 使用便攜式類庫帶SDK
- 26. 便攜式類庫中的配置值
- 27. VS 2013便攜式類庫windows.props
- 28. 便攜式類庫的IoC容器
- 29. SkyDrive中同步便攜式類庫/ mvvmcross
- 30. 便攜式類庫上的WebProxy