Xamarin LinkAssembly升级到MVVMCross 4.0后失败

Xamarin LinkAssembly升级到MVVMCross 4.0后失败,xamarin,mvvmcross,Xamarin,Mvvmcross,我刚刚将一个大型Xamarin项目从MVVMCross版本3.5更新为4.0。我已经修复了所有名称空间问题和bug,但我一直被这个bug困扰着: The "LinkAssemblies" task failed unexpectedly. Xamarin.Android.XamarinAndroidException: error XA2006: Reference to metadata item 'System.Boolean Android.OS.BaseBundle::GetBoole

我刚刚将一个大型Xamarin项目从MVVMCross版本3.5更新为4.0。我已经修复了所有名称空间问题和bug,但我一直被这个bug困扰着:

The "LinkAssemblies" task failed unexpectedly.
Xamarin.Android.XamarinAndroidException: error XA2006: Reference to metadata item 
'System.Boolean Android.OS.BaseBundle::GetBoolean(System.String,System.Boolean)' 
(defined in 'MvvmCross.Droid.FullFragging, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=null') from 'MvvmCross.Droid.FullFragging, Version=4.0.0.0, 
Culture=neutral, PublicKeyToken=null' could not be resolved. --->     
Mono.Cecil.ResolutionException: 
Failed to resolve System.Boolean Android.OS.BaseBundle::
GetBoolean(System.String,System.Boolean)

我已经在linkerConfig.xml中添加了
MvvmCross.Droid.FullFragging.
,但没有效果。

您需要做的是在构建中打开详细日志记录。对于iOS,通过添加以下内容指定详细日志记录:

-v -v -v -v
转到“额外生成参数”文本框。然后再次运行构建

For Android you can do this in the Visual Studio Tools -> Settings -> Xamarin -> Android settings -> Xamarin Diagnostics.
您可能会发现某些软件包的版本不同,从而导致此链接问题

使用详细日志记录,您将发现一些有关该问题的线索。我只提到了这个平台的详细日志记录,因为它是我目前最有经验的平台


这是我能提供的最好答案,因为这个问题可能是由大量的问题引起的,并且每个解决方案都是独立的。

我也遇到过同样的问题。MvvmCross DLL是针对android版本v6.0构建的。我注意到下面的输出选项卡(我的日志设置为详细)

警告XA0105:MvvmCross.Binding.Droid.dll(v6.0)的$(TargetFrameworkVersion)大于项目(v5.0)的$(TargetFrameworkVersion)

当我将项目更改为Android 6.0时,仍然收到链接器错误。当我在文本编辑器中打开项目文件时,我注意到它被定义了两次。一次在全局属性组中设置为6.0,一次在调试属性组中设置为5.0。我从Debug属性组中删除了以下行,问题就消失了

<TargetFrameworkVersion>v5.0</TargetFrameworkVersion>
v5.0

除了插件之外,您是否还引用了任何依赖于MvvmCross的软件包?只有其他MvvmCross插件。@GoldnArms您能解决这个问题吗?@jkh我暂时把这个问题放在一边,如果我得到任何新的指针,将重试。@GoldnArms在将“使用Android版本编译”和“目标Android版本”字段更改为Android 6.0(API级别23-棉花糖)后,这似乎在我的项目中得到了解决。