我正在尝试创建需要System.IO.Compression.GZipStream的PCL。我的PCL应在“常规” .NET 4.x和Xamarin.iOS上使用。

现在,这两个平台似乎都具有此类:我可以为每个平台创建一个项目,并可以正常访问它。

但是,如果我创建了针对.NET Framework 4.5和Xamarin.iOS的PCL(在Visual Studio 2015中),则找不到该类,因为该类似乎不在PCL配置文件子集中。

所以我的问题是:


为什么即使在两个平台上似乎都可以使用压缩,我也无法使用它(例如,这似乎表明它是.NET 4.5 PCL配置文件的一部分),并且
我该怎么做才能获得访问权限?




我的PCL目标设置:

c# - 如何从PCL库使用GZipStream?-LMLPHP

如果我尝试取消选择Silverlight 5,会发生什么情况:

c# - 如何从PCL库使用GZipStream?-LMLPHP

最佳答案

@anders是正确的。屏幕快照显示您在PCL配置文件中选择了Silverlight。

要启用Profile111,请编辑.csproj或在VS2015中进行检查:


.NET Framework 4.5
ASP.NET Core 5.0
Windows 8
Windows Phone 8.1
Xamarin.Android
Xamarin.iOS
Xamarin.iOS(经典)


关于为何即使您检查了兼容的配置文件也不可用的原因:需要将PCL中每个功能的支持专门添加到PCL配置文件中。它不会自动出现。并非所选平台的每个子集都作为PCL配置文件存在。发生的事情是您检查了感兴趣的平台。然后,Visual Studio选择与之兼容的配置文件之一。不幸的是,在这种情况下,包含Silverlight的配置文件。 Microsoft承认这令人困惑,并将对此进行改进。

关于c# - 如何从PCL库使用GZipStream?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34876873/

10-17 02:18