我有一个PCL项目,我试图使用微软提供的PCL版本的System.Net.Http及其依赖项,所有这些都是通过Nuget安装的。这在OSX中非常有用(我能够构建PCL,并在iOS和Android项目中成功地使用它)。
但是,在Windows上,我遇到了此堆栈溢出线程中描述的问题,编译器正在抛出有关未被解决的引用的警告(堆栈溢出问题中的第3项下的警告),如果出现关于Http命名空间不存在的错误(堆栈溢出问题中的#2中的错误),则会失败。
我尝试了在堆栈溢出问题中描述的解决方案,但是如果我将当前配置文件(在Project > Build >General中)从Profile136 (默认)更改为Profile78 (建议的解决方案),Xamarin就会崩溃。配置文件更改确实会保存到我的项目中,如果我试图重新启动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. 发布于 2014-05-06 04:56:14
多亏了这是在Xamarin论坛上的回复和这个Nuget已知问题文档,我终于成功地解决了这个问题。基本步骤:
这给我留下了一个成功构建的PCL项目,Profile7配置文件应该支持Xamarin.iOS和Xamarin.Android (以及WinRT .NET子集和完整的.NET框架)。没有Windows支持(为此我需要Profile78,而且Profile78不包括HttpClient或异步/等待支持),但在我的情况下,这并不是一个破坏程序的机制(我们甚至还没有考虑Windows版本的软件)。
https://stackoverflow.com/questions/23372837
复制相似问题