升级到MVVMCross 4.0后,LinkAssemblies失败

时间:2016-03-04 08:12:05

标签: xamarin mvvmcross

我刚刚从MVVMCross版本3.5更新了一个大型Xamarin项目到4.0。我已经修复了所有命名空间问题和错误,但我仍然坚持这个错误:

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)

我已将MvvmCross.Droid.FullFragging.*添加到linkerConfig.xml,但无济于事。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。 MvvmCross dll是为Android版本v6.0构建的。我注意到以下输出选项卡(我的日志记录设置为详细)。

  

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

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

<TargetFrameworkVersion>v5.0</TargetFrameworkVersion>

答案 1 :(得分:1)

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

指定详细日志记录
-v -v -v -v

添加额外的构建参数文本框。然后再次运行构建。

For Android you can do this in the Visual Studio Tools -> Settings -> Xamarin -> Android settings -> Xamarin Diagnostics.

您可能会发现某些软件包具有不同的版本,并会导致此链接问题。

您可以使用详细日志记录找到有关此问题的一些线索。我只提到了这个平台的详细日志记录,因为它是我目前最常见的平台。

这是我能提供的最佳答案,因为这个问题可能是由真正大量的问题引起的,并且对每个解决方案都是个人的。