【问题标题】:Xamarin Studio: Crashing on profile changeXamarin Studio:配置文件更改时崩溃
【发布时间】:2014-05-06 12:56:14
【问题描述】:

我有一个 PCL 项目,我正在尝试使用 Microsoft 提供的 PCL 版本的 System.Net.Http 及其依赖项,所有这些都通过 Nuget 安装。这一切在 OSX 中运行良好(我能够构建 PCL,并在 iOS 和 Android 项目中成功使用它)。

但是,在 Windows 上,我遇到了this Stack Overflow thread 中描述的问题,其中编译器抛出有关未解决引用的警告(堆栈溢出问题中 #3 下的警告)并失败并出现关于Http 命名空间不存在(堆栈溢出问题中#2 中的错误)。

我尝试了 Stack Overflow 问题中描述的解决方案,但如果我将当前配置文件(在项目选项 > 构建 > 常规中)从 Profile136(默认)更改为 Profile78(建议解决方案)。配置文件更改确实会保存到我的项目中,如果我尝试重新启动 Xamarin Studio,则会再次发生崩溃。异常和(部分)堆栈跟踪如下所示。

有关如何解决此异常的任何建议,或堆栈溢出线程中描述的问题的替代解决方案?

System.StackOverflowException was unhandled
Message: An unhandled exception of type 'System.StackOverflowException' occurred in ICSharpCode.NRefactory.dll

堆栈跟踪:

> ICSharpCode.NRefactory.dll!ICSharpCode.NRefactory.TypeSystem.TopLevelTypeNameComparer.GetHashCode(ICSharpCode.NRefactory.TypeSystem.TopLevelTypeName obj) Unknown
  mscorlib.dll!System.Collections.Generic.Dictionary<ICSharpCode.NRefactory.TypeSystem.TopLevelTypeName,ICSharpCode.NRefactory.TypeSystem.IUnresolvedTypeDefinition>.FindEntry(ICSharpCode.NRefactory.TypeSystem.TopLevelTypeName key)  Unknown
  mscorlib.dll!System.Collections.Generic.Dictionary<ICSharpCode.NRefactory.TypeSystem.TopLevelTypeName,ICSharpCode.NRefactory.TypeSystem.IUnresolvedTypeDefinition>.TryGetValue(ICSharpCode.NRefactory.TypeSystem.TopLevelTypeName key, out ICSharpCode.NRefactory.TypeSystem.IUnresolvedTypeDefinition value) Unknown
  ICSharpCode.NRefactory.dll!ICSharpCode.NRefactory.TypeSystem.Implementation.DefaultUnresolvedAssembly.DefaultResolvedAssembly.GetTypeDefinition(ICSharpCode.NRefactory.TypeSystem.TopLevelTypeName topLevelTypeName)  Unknown
  ICSharpCode.NRefactory.dll!ICSharpCode.NRefactory.TypeSystem.TypeSystemExtensions.GetTypeDefinition(ICSharpCode.NRefactory.TypeSystem.IAssembly assembly, ICSharpCode.NRefactory.TypeSystem.FullTypeName fullTypeName)  Unknown
  ICSharpCode.NRefactory.dll!ICSharpCode.NRefactory.TypeSystem.Implementation.GetClassTypeReference.Resolve(ICSharpCode.NRefactory.TypeSystem.ITypeResolveContext context)  Unknown
  ICSharpCode.NRefactory.dll!ICSharpCode.NRefactory.TypeSystem.Implementation.DefaultUnresolvedAssembly.DefaultResolvedAssembly.GetTypeDefinition(ICSharpCode.NRefactory.TypeSystem.TopLevelTypeName topLevelTypeName)  Unknown
  ICSharpCode.NRefactory.dll!ICSharpCode.NRefactory.TypeSystem.TypeSystemExtensions.GetTypeDefinition(ICSharpCode.NRefactory.TypeSystem.IAssembly assembly, ICSharpCode.NRefactory.TypeSystem.FullTypeName fullTypeName)  Unknown
  ICSharpCode.NRefactory.dll!ICSharpCode.NRefactory.TypeSystem.Implementation.GetClassTypeReference.Resolve(ICSharpCode.NRefactory.TypeSystem.ITypeResolveContext context)  Unknown
[... : Removed for brevity; repeat the previous three stack frames about 1000 times]
  The maximum number of stack frames supported by Visual Studio has been exceeded.  

【问题讨论】:

    标签: xamarin.ios portable-class-library xamarin-studio


    【解决方案1】:

    感谢this reply on the Xamarin forumsthis Nuget known issues document,我终于成功地解决了这个问题。基本步骤:

    1. 删除为 HTTPClient 和 Async 支持添加的 Nuget 包(包括 BCL 兼容性包)。此外,如有必要,请删除它们的引用(Xamarin Studio 的 Nuget 插件没有为我执行此操作,删除包后留下损坏的引用)。

    2. 切换到 Profile7 而不是 Profile158(Xamarin Studio for Mac 的 PCL 项目模板中的默认设置)。

    这给我留下了一个成功构建的 PCL 项目,并且 Profile7 配置文件应该支持 Xamarin.iOS 和 Xamarin.Android(以及 WinRT .NET 子集和完整的 .NET 框架)。没有 Windows Phone 支持(我需要 Profile78,而 Profile78 不包括 HttpClient 或 async/await 支持),但在我的情况下这不是一个交易破坏者(我们甚至还没有接近考虑我们的 Windows Phone 版本软件)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-23
      相关资源
      最近更新 更多