关于使用PCL多次定义的类型的奇怪错误

时间:2014-06-02 13:41:18

标签: xamarin.ios xamarin portable-class-library dotnet-httpclient

我有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(版本35)安装UUID:   (...)运行时:单声道3.2.6   ((no / 9b58377)GTK + 2.24.23(罗利主题)

     

包装版本:302060000

     

=== Apple Developer Tools ===

     

Xcode 5.1.1(5085)Build 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支持   Android版本:         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

1 个答案:

答案 0 :(得分:1)

在评论中讨论后,在我看来,你正在运行旧版本的Xamarin Studio,Xamarin.iOS和Xamarin.Android。

请确保您至少拥有以下稳定版本或更新版本(目前在稳定版本频道上可用:

  • Xamarin Studio: 5.0
  • 单声道: 3.4.0
  • GTK#: 2.24.23
  • Xamarin.iOS: 7.2.3.39
  • Xamarin.Android: 4.12.4
  • XCode: 5.1.1

请尝试更新,您的问题应该消失,此外,您还可以获得更好的Xamarin Studio版本!