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