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. 便攜式類庫,XmlAnyElementAttribute
- 3. MvvmCross便攜式類庫 - System.Net.ServicePointManager
- 4. 在VS2015中創建便攜式類庫
- 5. Netstandard庫 - 在便攜式類中引用
- 6. 在便攜式類庫中包含XPathSelectElement
- 7. 便攜式PySide庫?
- 8. 共享[DataContract]類的便攜式類庫
- 9. 便攜式類庫部分類
- 10. 便攜式類庫的IoC容器
- 11. 沒有Xamarin便攜式類庫
- 12. 便攜式類庫中的配置值
- 13. .NET便攜式類庫和UDP支持
- 14. 便攜式類庫上的WebProxy
- 15. 便攜式類庫WebResponse StatusCode缺少
- 16. XmlTextReader的是便攜式類庫支持?
- 17. 便攜式類庫(PCL)貢獻 - 加密
- 18. Xamarin便攜式類庫問題
- 19. 便攜式類庫中的sqlite
- 20. SkyDrive中同步便攜式類庫/ mvvmcross
- 21. MonoDroid和MonoTouch的便攜式類庫
- 22. 便攜式類庫 - 目標的Silverlight 5
- 23. 使用便攜式類庫帶SDK
- 24. 便攜式類庫System.Object錯誤
- 25. 使數據庫便攜式
- 26. 便攜式C#數據庫
- 27. 便攜式VFS庫C++
- 28. 68000,便攜式JIT庫
- 29. 便攜式庫錯誤
- 30. 便攜式Eclipse