【发布时间】:2014-06-02 13:41:18
【问题描述】:
我有 Xamarin.Android、Xamarin.iOS 和 Windows Phone 8 应用程序,它们都引用了通用 PCL 库。在这个库中我使用的是 HttpClient,并且因为 WP8,我需要 nuget 包Microsoft.Net.Http.2.2.22
如果不在 HttpClient 上启用压缩,一切都可以在所有 3 个平台上正常工作。但是,将代码更改为
var handler = new HttpClientHandler();
if (handler.SupportsAutomaticDecompression)
{
handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
}
httpClient = new HttpClient(handler);
iOS 上的库存在构建错误(Android 和 WP 都可以正常工作)告诉我DecompressionMethods 的多个定义。奇怪的是 - 错误中提到的第二个程序集是 System.Net.Primitives.dll - 它不包含 DecompressionMethods 的定义(我什至检查了 ILSpy)。
当然,我尝试了干净的解决方案、重建、关闭/打开 Xamarin Studio 等...
错误:
MyApiHttpClient.cs(30,50): error CS0433: The imported type `System.Net.DecompressionMethods' is defined multiple times
/Users/vtoth/myprototype/Services/CommonServices/../../packages/Microsoft.Net.Http.2.2.22/lib/portable-net40+sl4+win8+wp71+wpa81/System.Net.Http.Primitives.dll (Location of the symbol related to previous error)
/Library/Frameworks/Mono.framework/Versions/3.2.6/lib/mono/xbuild-frameworks/.NETPortable/v4.5/Profile/Profile49/System.Net.Primitives.dll (Location of the symbol related to previous error)
Task "Csc" execution -- FAILED
Done building target "CoreCompile" in project "/Users/vtoth/myprototype/Services/CommonServices/CommonServices.csproj".-- FAILED
编辑: 开发环境的版本信息:
=== Xamarin Studio ===
版本 4.2.4 (build 35) 安装 UUID: (...) 运行时:Mono 3.2.6 ((no/9b58377) GTK+ 2.24.23 (Raleigh 主题)
包版本:302060000
=== 苹果开发者工具 ===
Xcode 5.1.1 (5085) 构建 5B1008
=== Xamarin.iOS ===
版本:7.2.1.42(商业版)哈希:773c77c 分支:构建 日期:2014-04-18 15:39:16-0400
=== Xamarin.Mac ===
Xamarin.Mac:未安装
=== Xamarin.Android ===
版本:4.12.3(商业版)Android SDK: /Users/vtoth/Library/Developer/Xamarin/android-sdk-mac_x86 支持 安卓版本: 2.1(API 级别 7) 2.2(API 级别 8) 2.3(API 级别 10) 3.1(API 级别 12) 4.0(API 级别 14) 4.0.3(API 级别 15) 4.3(API 级别 18) 4.4(API 级别 19)Java SDK:/usr java 版本“1.6.0_65”Java(TM) SE 运行时环境(构建 1.6.0_65-b14-462-11M4609)Java HotSpot(TM) 64 位服务器 VM(内部版本 20.65-b04-462,混合模式)
=== 构建信息 ===
版本 ID:402040035 Git 版本: 1173cb1c45bc56cb702e82cd21a7c9d0cea4acbf 构建日期:2014-04-17 13:45:52-04 Xamarin 插件:53bde0041263928e8bd64686f5ca5a8e4338dd76
=== 操作系统 ===
Mac OS X 10.9.2
【问题讨论】:
-
我无法自己使用 Xamarin 产品的最新稳定渠道重现此问题...我创建了一个 repro 项目,请查看您自己是否有问题:github.com/Redth/Xamarin.HttpClient.Repro
-
您好,感谢您的努力!我尝试了您的复制项目,并且错误也存在于其中 - 对于两个 PCL 项目。有什么想法吗?
-
您是在 Windows 或 Mac 上的 Visual Studio 中运行它吗?
-
Mac 上的 Xamarin Studio,我用详细信息编辑了我的问题
-
嗯,我也是(Mac 上的 Xamarin Studio)...您安装的所有产品的版本是什么?转到 Xamarin Studio -> 关于 Xamarin Studio -> 显示详细信息,然后复制该信息...
标签: xamarin.ios xamarin portable-class-library dotnet-httpclient