xamarin - 将 Android 应用程序升级到 MvvmCross 6.4.1 导致在 Visual Studio 2017 上构建失败
问题描述
如标题所示,我正在升级现有 Xamarin.Android 项目的依赖项。Android 项目对大部分跨平台代码使用 MvvmCross(我们也支持其他平台)。作为此次升级的一部分,我们将从 MvvmCross 6.2.2 迁移到 6.4.1。
但是,升级库后,在使用 Visual Studio 2017 构建时,项目不再按预期构建。我收到的错误消息如下所示。我试过清洁和重建无济于事。该项目使用 Visual Studio 2019 构建,但出现了奇怪的行为;这甚至在升级我们的依赖项之前就已经发生了。
任何有关解决此问题的可能方法的建议将不胜感激。非常感谢您!
The "LinkAssemblies" task failed unexpectedly.
Java.Interop.Tools.Diagnostics.XamarinAndroidException: error XA2006: Could not resolve reference to 'System.Collections.Generic.Stack`1' (defined in assembly 'MvvmCross, Version=6.4.1.0, Culture=neutral, PublicKeyToken=null') with scope 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'. When the scope is different from the defining assembly, it usually means that the type is forwarded. ---> Mono.Cecil.ResolutionException: Failed to resolve System.Collections.Generic.Stack`1
at Mono.Linker.Steps.MarkStep.HandleUnresolvedType(TypeReference reference)
at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference)
at MonoDroid.Tuner.MonoDroidMarkStep.MarkType(TypeReference reference)
at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference)
at MonoDroid.Tuner.MonoDroidMarkStep.MarkType(TypeReference reference)
at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference)
at MonoDroid.Tuner.MonoDroidMarkStep.MarkType(TypeReference reference)
at Mono.Linker.Steps.MarkStep.InitializeType(TypeDefinition type)
at Mono.Linker.Steps.MarkStep.InitializeAssembly(AssemblyDefinition assembly)
at Mono.Linker.Steps.MarkStep.Initialize()
at MonoDroid.Tuner.MonoDroidMarkStep.Process(LinkContext context)
at Mono.Linker.Pipeline.Process(LinkContext context)
at MonoDroid.Tuner.Linker.Process(LinkerOptions options, ILogger logger, LinkContext& context)
at Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)
--- End of inner exception stack trace ---
at Java.Interop.Tools.Diagnostics.Diagnostic.Error(Int32 code, Exception innerException, String message, Object[] args)
at Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)
at Xamarin.Android.Tasks.LinkAssemblies.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() RadResponder.Mobile.UI.Droid
解决方案
从 MvvmCross 6.3.1 升级到 MvvmCross 6.4.1 并使用 VS 2017 后,我们也有类似的错误:
未处理的异常:System.TypeLoadException:无法从 typeref 解析带有令牌 01000113 的类型(预期类 'System.Collections.Generic.Stack
1' in assembly 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e') assembly:mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e type:System.Collections.Generic.Stack
1 成员:(null)发生
无法使用来自 typeref 的令牌 01000113 解析类型(预期类 'System.Collections.Generic.Stack 1' in assembly 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e') assembly:mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e type:System.Collections.Generic.Stack
1 成员:(null)
at MvvmCross.Platforms.Android.Binding.MvxAndroidBindingBuilder.InitializeContextStack () [0x00000] in D:\a\1\s\MvvmCross\Platforms\Android\Binding\MvxAndroidBindingBuilder.cs:273
at MvvmCross.Platforms.Android.Binding.MvxAndroidBindingBuilder.RegisterPlatformSpecificComponents () [0x0000c] in D:\a\1\s\MvvmCross\Platforms\Android\Binding\MvxAndroidBindingBuilder.cs:268
at MvvmCross.Binding.MvxCoreBindingBuilder.DoRegistration () [0x00048] in D:\a\1\s\MvvmCross\Binding\MvxCoreBindingBuilder.cs:36
at MvvmCross.Binding.MvxBindingBuilder.DoRegistration () [0x00000] in D:\a\1\s\MvvmCross\Binding\MvxBindingBuilder.cs:16
at MvvmCross.Platforms.Android.Binding.MvxAndroidBindingBuilder.DoRegistration () [0x00012] in D:\a\1\s\MvvmCross\Platforms\Android\Binding\MvxAndroidBindingBuilder.cs:32
at MvvmCross.Platforms.Android.Core.MvxAndroidSetup.InitializeBindingBuilder () [0x0000d] in D:\a\1\s\MvvmCross\Platforms\Android\Core\MvxAndroidSetup.cs:164
at MvvmCross.Platforms.Android.Core.MvxAndroidSetup.InitializeLastChance () [0x00006] in D:\a\1\s\MvvmCross\Platforms\Android\Core\MvxAndroidSetup.cs:151
at MvvmCross.Core.MvxSetup.InitializeSecondary () [0x0017a] in D:\a\1\s\MvvmCross\Core\MvxSetup.cs:132
at MvvmCross.Core.MvxSetupSingleton+<<StartSetupInitialization>b__13_0>d.MoveNext () [0x0001c] in D:\a\1\s\MvvmCross\Core\MvxSetupSingleton.cs:187
--- End of stack trace from previous location where exception was thrown ---
at MvvmCross.Core.MvxSetupSingleton.EnsureInitialized () [0x0006e] in D:\a\1\s\MvvmCross\Core\MvxSetupSingleton.cs:116
at MvvmCross.Platforms.Android.Views.MvxActivityViewExtensions.EnsureSetupInitialized (MvvmCross.Platforms.Android.Views.IMvxAndroidView androidView) [0x0001c] in D:\a\1\s\MvvmCross\Platforms\Android\Views\MvxActivityViewExtensions.cs:154
at MvvmCross.Platforms.Android.Views.MvxActivityViewExtensions.OnViewCreate (MvvmCross.Platforms.Android.Views.IMvxAndroidView androidView, Android.OS.Bundle bundle) [0x00014] in D:\a\1\s\MvvmCross\Platforms\Android\Views\MvxActivityViewExtensions.cs:39
at MvvmCross.Platforms.Android.Views.MvxActivityAdapter.EventSourceOnCreateCalled (System.Object sender, MvvmCross.Base.MvxValueEventArgs`1[T] eventArgs) [0x00000] in D:\a\1\s\MvvmCross\Platforms\Android\Views\MvxActivityAdapter.cs:76
at (wrapper delegate-invoke) System.EventHandler`1[MvvmCross.Base.MvxValueEventArgs`1[Android.OS.Bundle]].invoke_void_object_TEventArgs(object,MvvmCross.Base.MvxValueEventArgs`1<Android.OS.Bundle>)
at MvvmCross.Base.MvxDelegateExtensions.Raise[T] (System.EventHandler`1[TEventArgs] eventHandler, System.Object sender, T value) [0x00000] in D:\a\1\s\MvvmCross\Base\MvxDelegateExtensions.cs:18
at MvvmCross.Droid.Support.V7.AppCompat.EventSource.MvxEventSourceAppCompatActivity.OnCreate (Android.OS.Bundle bundle) [0x00014] in D:\a\1\s\MvvmCross.Android.Support\V7.AppCompat\EventSource\MvxEventSourceAppCompatActivity.cs:33
at MvvmCross.Droid.Support.V7.AppCompat.MvxAppCompatActivity.OnCreate (Android.OS.Bundle bundle) [0x00000] in D:\a\1\s\MvvmCross.Android.Support\V7.AppCompat\MvxAppCompatActivity.cs:88
at ITG.Brix.Mobile.EOrder.Views.Activities.LoginActivity.OnCreate (Android.OS.Bundle bundle) [0x00002] in C:\Projects\Git\native-eorder\ITG.Brix.Mobile.EOrder\Views\Activities\LoginActivity.cs:25
推荐阅读
- airbrake - Airbrake 控制面板 - 更改部署标签颜色
- java - 是否可以从 JCuda 将数据发送到定义为 Union 的 GPU 内存?
- c# - 我有一个问题和一个错误。C# CS8180
- java - 每次我点击 Space 时,Libgdx 跳跃和碰撞方法都不起作用
- python - 在 PPT 占位符中适合图片
- php - 会话变量在每次页面重新加载时销毁
- angular - 在Angular 7中使用变量作为参数的ngx-translate
- javascript - 在表单验证中包含数字签名
- python - Glumpy错误'OSError:[WinError 126]找不到指定的模块'
- python - 为什么 Pexpect 代码没有得到我需要的数据?