升级到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,但无济于事。
答
你需要做的是在你的构建中打开详细日志记录。对于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>
您是否引用了除插件外还依赖于MvvmCross的所有软件包? –
只有其他MVVMCross插件。 – Arnstein
@GoldnArms你能解决这个问题吗? – jkh