MvvmCross 6.4.1 Mvx.IoCProvider.Resolve<IMvxAppStart>() 失败,找不到构造函数
Posted
技术标签:
【中文标题】MvvmCross 6.4.1 Mvx.IoCProvider.Resolve<IMvxAppStart>() 失败,找不到构造函数【英文标题】:MvvmCross 6.4.1 Mvx.IoCProvider.Resolve<IMvxAppStart>() have failed, do not find the constructor 【发布时间】:2020-04-19 10:40:47 【问题描述】:将 MvvmCross 更新到 6.4.1 后,要启动项目 Xamarin.ios,不推荐使用 Mvx.Resolve,然后现在我使用:Mvx.IoCProvider.Resolve(),但出现以下错误:
堆栈跟踪:
无法解析类型 MvvmCross.ViewModels.IMvxAppStart Stacktrace: 在 MvvmCross.IoC.MvxIoCContainer.Resolve (System.Type t) [0x0001c] 在 D:\a\1\s\MvvmCross\IoC\MvxIoCContainer.cs:252 在 MvvmCross.IoC.MvxIoCContainer.Resolve[T] () [ 0x00000] 在 D:\a\1\s\MvvmCross\IoC\MvxIoCContainer.cs:242 在 MvvmCross.IoC.MvxIoCProvider.Resolve[T] () [0x00000] 在 D:\a\1\s\MvvmCross\IoC \MvxIoCProvider.cs:66 at Fidelity.FCS.iOS.AppDelegate.FinishedLaunching (UIKit.UIApplication application, Foundation.NSDictionary launchOptions) [0x0015d] in ProjectName/AppDelegate.cs:98 at (wrapper managed-to-native) UIKit.UIApplication .UIApplicationMain(int,string[],intptr,intptr) 在 /Library/Frameworks/Xamarin.iOS 中的 UIKit.UIApplication.Main (System.String[] args, System.IntPtr principal, System.IntPtr delegate) [0x00005]。在 /库/Frameworks/Xamarin.iOS.framework/Versions/13.6.0.12/src/ Xamarin.iOS/UIKit/UIApplication.cs:65 at Fidelity.FCS.iOS.Application.Main (System.String[] args) [0x00001] in ProjectName/Main.cs:13
在 AppDelegate 中的代码部分下方,发生错误:
UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.LightContent, true);
Window = new UIWindow(UIScreen.MainScreen.Bounds);
var presenter = new CustomMvxIosViewPresenter(this, Window);
var setup = new Setup(this, presenter);
setup.PlatformInitialize();
//here , in this call, happens the error
var startup = Mvx.IoCProvider.Resolve<ImvxAppStart>();
startup.Start();
Window.MakeKeyAndVisible();
我正在使用 Visual Studio for Mac 我的 Visual Studio For Mac 配置:
Visual Studio Community 2019 for Mac 版本 8.3.11(内部版本 1)安装 UUID:0672de6a-2768-4316-8e45-910515627427 GTK+ 2.24.23(Raleigh 主题)Xamarin.Mac 5.16.1.24 (d16-3 / 08809f5b)
包版本:604000208
Mono 框架 MDK 运行时:Mono 6.4.0.208 (2019-06/07c23f2ca43)(64 位)软件包版本:604000208
Xamarin Designer 版本:16.3.0.256 哈希:8a223bfd7 分支:remotes/origin/d16-3 构建日期:2019-11-01 21:02:02 UTC
NuGet 版本:5.3.0.6192
.NET Core SDK SDK:未安装 MSBuild SDK:/Users/iterative/5.18.1/lib/mono/msbuild/15.0/bin/Sdks
.NET Core Runtime 运行时:未安装
Xamarin.Profiler 版本:1.6.12.29 位置:/Applications/Xamarin Profiler.app/Contents/MacOS/Xamarin Profiler
更新版本:11
Apple 开发者工具 Xcode 11.2.1 (15526.1) Build 11B53
Xamarin.Mac 版本:6.6.0.12(Visual Studio 社区)哈希:e3c2b406d 分支:xcode11.2 构建日期:2019-11-01 00:12:07-0400
Xamarin.iOS 版本:13.6.0.12(Visual Studio 社区)哈希:e3c2b406d 分支:xcode11.2 构建日期:2019-11-01 00:12:08-0400
Xamarin.android 版本:10.0.6.2(Visual Studio 社区)提交:xamarin-android/d16-3/c407838 Android SDK:/Users/iterative/Library/Developer/Xamarin/android-sdk-macosx 支持的 Android 版本: 7.1(API 级别 25)8.0(API 级别 26)8.1(API 级别 27)
SDK 工具版本:26.1.1 SDK 平台工具版本:29.0.5 SDK 构建工具版本:29.0.2
构建信息:Mono:mono/mono/2019-06@476d72b9e32 Java.Interop:xamarin/java.interop/d16-3@5836f58 LibZipSharp:grendello/LibZipSharp/d16-3@71f4a94 LibZip:nih-at/libzip /rel-1-5-1@b95cf3fd ProGuard:xamarin/proguard/master@905836d SQLite:xamarin/sqlite/3.27.1@8212a2d Xamarin.Android 工具:xamarin/xamarin-android-tools/d16-3@cb41333 Microsoft Mobile OpenJDK Java SDK:/Users/iterative/Library/Developer/Xamarin/jdk/microsoft_dist_openjdk_1.8.0.25 1.8.0-25 此处提供 Android Designer EPL 代码:https://github.com/xamarin/AndroidDesigner.EPL Android SDK Manager 版本:1.4.0.65 哈希:c33b107 分支:remote/origin/d16-3 构建日期:2019-11-19 20:33:22 UTC Android 设备管理器版本:1.2.0.116 哈希:d2b2af0 分支:remote/origin/d16-3 构建日期:2019-11-19 20:33:42 UTC Xamarin Inspector 版本:1.4.3 哈希:db27525 分支:1.4-release 构建日期:星期一,2018 年 7 月 9 日 21:20:18 GMT 客户端兼容性:1
构建信息发布 ID:803110001 Git 修订:6ee6ad2ec46ae5a08a1999ee4c815ac656a35b91 构建日期:2019-12-05 16:09:27+00 构建分支:release-8.3 Xamarin 扩展:56bd70ef2e327f71c615cfc29a47fd50685fadcb
操作系统 Mac OS X 10.14.6 Darwin 18.7.0 Darwin Kernel Version 18.7.0 Tue Aug 20 16:57:14 PDT 2019 root:xnu-4903.271.2~2/RELEASE_X86_64 x86_64
【问题讨论】:
能分享一下ImvxAppStart.cs和MvxIoCContainer.cs的代码吗? 你有被 MvxAppStart 类继承的类吗? 【参考方案1】:我只需要弄清楚这一点,因为没有答案 - 我通过添加以下行解决了这个问题 -
MvxIosSetupSingleton.EnsureSingletonAvailable(this,presenter).EnsureInitialized();
所以我的应用委托使用
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
_window = new UIWindow(UIScreen.MainScreen.Bounds);
var presenter = IsPad? (IMvxIosViewPresenter)new
SplitViewPresenter(this,_window) : new SingleViewPresenter(this, _window);
var setup = new Setup();
setup.PlatformInitialize(this , presenter);
MvxIosSetupSingleton.EnsureSingletonAvailable(this,presenter).EnsureInitialized();
var startup = Mvx.IoCProvider.Resolve<IMvxAppStart>();
startup.Start();
_window.MakeKeyAndVisible();
return true;
【讨论】:
以上是关于MvvmCross 6.4.1 Mvx.IoCProvider.Resolve<IMvxAppStart>() 失败,找不到构造函数的主要内容,如果未能解决你的问题,请参考以下文章