当我尝试在sqlite中创建一个表时,应用程序失败了,因为我要创建的表没有列,奇怪的是我还创建了8个表,这些表工作正常而没有错误,我有正在阅读一些帖子,其中一篇说如果我将构建选项更改为" Link SDK Frameworks只会有效,但问题是当我这样做时会发生这种情况:
/Users/MacDeveloper/Documents/MDC/FrontEnd/MDC.Presentation.IOS/MTOUCH: 错误MT2002:无法解决 " System.Configuration.ApplicationSettingsBase"参考来自"系统, Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089" (MT2002)(MDC.Presentation.IOS)
我将链接行为更改为Link all但我收到相同的错误,同样在Dont Link中我收到以下错误:
/Users/MacDeveloper/Documents/MDC/FrontEnd/MDC.Presentation.IOS/MTOUCH: 错误MT3001:无法对装配进行AOT操作 ' /Users/MacDeveloper/Documents/MDC/FrontEnd/MDC.Presentation.IOS/obj/iPhone/Debug/mtouch-cache/64/Build/MDC.Business.dll' (MT3001)(MDC.Presentation.IOS)
错误中的dll来自导入到项目的另一个库,该库是使用Visual Studio创建的。
这个问题有解决方案吗?
答案 0 :(得分:1)
这是因为您的某些程序集是根据MS .NET框架完整桌面配置文件编译的。
这不是Xamarin产品附带的产品。 BCL是一个名为 mobile 的子集,针对大小进行了优化。这会删除一些类型,如ball.moveball()
(命名空间和程序集)。
您的第一个错误表明程序集正在使用不存在的类型
System.Configuration.ApplicationSettingsBase
并且程序集完全限定名称以
开头系统,版本= 4.0.0.0
这不是Xamarin发布的版本,它将是System.Configuration
与Silverlight使用的版本相同的版本(原始移动配置文件所基于的版本)。
您的第二个错误可能类似,但会在稍后阶段发生(因为您禁用了链接器)。在这种情况下,AOT编译器会看到对不存在的方法的调用,并且根本无法生成正确的代码。
解决方案是针对Xamarin SDK程序集(产品附带的BCL)或Xamarin支持的其中一个PCL配置文件重建代码。