升级到MVVMCross 4.0后LinkAssemblies失败

问题描述:

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

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,但无济于事。

+0

您是否引用了除插件外还依赖于MvvmCross的所有软件包? –

+0

只有其他MVVMCross插件。 – Arnstein

+0

@GoldnArms你能解决这个问题吗? – jkh

你需要做的是在你的构建中打开详细日志记录。对于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)比$(TargetFrameworkVersion)为您的项目(V5.0)更大。

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

<TargetFrameworkVersion>v5.0</TargetFrameworkVersion>