【问题标题】:Strange error about type defined multiple times with PCL关于使用 PCL 多次定义的类型的奇怪错误
【发布时间】: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


【解决方案1】:

在 cmets 中讨论后,在我看来,您运行的是旧版本的 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 版本!

【讨论】:

  • 好吧,因为我们在发布之前,这是升级环境最糟糕的时间,可能会发现新的问题,所以我无法验证这是否解决了问题。但是,由于我必须立即奖励赏金或让它落空,我将奖励您在复制项目中的努力:) 并且您稍后会知道升级是否有帮助。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-16
  • 1970-01-01
相关资源
最近更新 更多