我正在使用MVVMCross的Xamarin應用程序。發佈模式中的IoCResolveException
當我在調試模式下運行時,該應用程序完美運行。
但是,如果嘗試在釋放模式運行失敗,異常:
Exception masked MvxIoCResolveException: Failed to resolve type
FlexConta.Contracts.Service.IUserService
[mvx] at MvvmCross.Platform.IoC.MvxSimpleIoCContainer.Resolve (System.Type t) [0x00035] in <0da3cbd163cf47a29ec04fff5bb9eecd>:0
[mvx] at MvvmCross.Platform.IoC.MvxSimpleIoCContainer.Resolve[T]() [0x00000] in <0da3cbd163cf47a29ec04fff5bb9eecd>:0
[mvx] at MvvmCross.Platform.Mvx.Resolve[TService]() [0x00005] in <0da3cbd163cf47a29ec04fff5bb9eecd>:0
[mvx] at FlexConta.Core.AppStart.Start (System.Object hint) [0x00000] in <880d0bdc2a5448ffb4d7b35d827753b5>:0
[mvx] at MvvmCross.Droid.Support.V7.AppCompat.MvxSplashScreenAppCompatActivity.TriggerFirstNavigate() [0x00005] in <74631770bbbe4bff8d50c85acb55083c>:0
[mvx] at MvvmCross.Droid.Support.V7.AppCompat.MvxSplashScreenAppCompatActivity.InitializationComplete() [0x00009] in <74631770bbbe4bff8d50c85acb55083c>:0
[mvx] at MvvmCross.Droid.Platform.MvxAndroidSetupSingleton.<InitializeFromSplashScreen>b__7_1() [0x0000a] in <099dd6f64bd74189922e6888bc76e146>:0
[mvx] at MvvmCross.Platform.Core.MvxMainThreadDispatcher.ExceptionMaskedAction (System.Action action) [0x00000] in <0da3cbd163cf47a29ec04fff5bb9eecd>:0
我使用MVVMCross IOC容器,我去註冊的依賴性如下:
public override void Initialize()
{
base.Initialize();
CreatableTypes()
.EndingWith("Repository")
.AsInterfaces()
.RegisterAsLazySingleton();
CreatableTypes()
.EndingWith("Service")
.AsInterfaces()
.RegisterAsLazySingleton();
Mvx.RegisterSingleton<IUserRestAPI>(new UserRestAPI());
RegisterAppStart(new AppStart());
}
用戶服務等級:
public class UserService : IUserService
{
private readonly IUserRepository _userRepository;
private readonly IDocumentTypesRepository _documentTypesRepository;
private readonly IUserRestAPI _userRestAPI;
public UserService(IUserRepository userRepository, IDocumentTypesRepository documentTypesRepository, IUserRestAPI userRestAPI)
{
_userRepository = userRepository;
_documentTypesRepository = documentTypesRepository;
_userRestAPI = userRestAPI;
}
.
.
.
}
可能發生了什麼?
如果您的鏈接器設置爲您的發佈版本設置爲「None」以外的其他值,請在您的UserService類上添加鏈接器[Preserve(AllMembers = true)],實際上所有的* Service和*存儲庫類... – SushiHangover