MVVMCross 6.4.2는 MVVMCross 6 시리즈 내에서 업데이트되어 프레임 워크에 몇 가지 변경 사항과 개선이 도입되었습니다. 6.4.2 자체의 특정 변화 자체는 검색 결과에 상세하지 않지만 MVVMCross 6의 더 넓은 컨텍스트와 플러그인로드 메커니즘을 이해하면 플러그인로드에 대한 잠재적 영향을 식별하는 데 도움이 될 수 있습니다.
MVVMCross의 주요 변경 사항 6
1. 단순화 된 플러그인 개발 : MVVMCross 6.0에서 시작하여 플러그인 개발이 더 간단 해졌습니다. 플러그인을 만들려면 기본 mvvmcross 패키지를 참조하는 라이브러리를 만들고`imvxplugin`에서 상속하는 유형을 추가하고 'mvxpluginattribute'로 주석을 달아야합니다. 플러그인의 '로드'방법은 앱 설정 중에 자동으로 호출되며, 여기서 IOC 컨테이너에 서비스 및 클래스를 등록해야합니다 [4].
2. IOC 개선 : MVVMCross 6에는 플러그인이로드 및 등록되는 방식에 영향을 줄 수있는 서비스의 더 나은 생성자 일치와 같은 IOC (제어의 역전) 시스템의 개선이 포함되어 있습니다 [9].
3. 플랫폼 지원 : MVVMCross 6은 Xamarin iOS, Android, Forms, Windows 및 Mac을 포함한 다양한 플랫폼을 지원합니다. 이 광범위한 지원을 통해 플러그인이 다른 플랫폼에서 사용될 수 있지만, 제대로 처리되지 않으면 플랫폼 별 문제가 발생할 수 있습니다 [2].
플러그인로드의 잠재적 문제
- 어셈블리 로딩 : MVVMCross 6에서 플러그인은`mvxpluginattribute '로 주석이 달린 유형에 대한 스캔 어셈블리로로드됩니다. 플러그인이 포함 된 어셈블리가 제대로 참조되거나로드되지 않으면 플러그인로드 [1] [4]와 관련된 문제가 발생할 수 있습니다.
- NULL 참조 예외 : 경우에 따라 보이는 것처럼 플러그인 어셈블리가 올바르게 식별되지 않거나 IOC 등록 프로세스에 문제가있는 경우 NULL 참조 예외가 발생할 수 있습니다 [1].
- 버전 호환성 : 모든 MVMCross 패키지 및 플러그인이 동일한 버전에 있는지 확인하는 것은 호환성 문제를 피하기 위해 중요합니다. 여기에는 모든 NUGET 패키지가 최신 호환 버전으로 업데이트되는지 확인하는 것이 포함됩니다 [7].
MVVMCross 6.4.2의 플러그인로드 모범 사례
-``rodplugins ''를 올바르게 재정의 : 플러그인로드를 사용자 정의하는 경우, 'loadplugins'메소드가 플랫폼 별 설정 클래스에서 올바르게 재정의되어 사용자 정의 로직을 처리하십시오 [1] [7].
-`imvxpluginmanager`를 사용하십시오 :`imvxpluginmanager`를 사용하여 플러그인로드를 관리하고 플러그인이 IOC 컨테이너에 올바르게 등록되어 있는지 확인하십시오 [4].
- 로그 및 예외 모니터링 : Mac 또는 Windows의 장치 로그와 같은 도구를 사용하여 플러그인로드 중에 발생할 수있는 예외를 모니터링합니다 [3].
요약하면, MVVMCross 6.4.2는 6 시리즈의 이전 버전과 비교하여 플러그인로드에 대한 특정 변경 사항을 도입하지 않지만 단순화 된 플러그인 개발 프로세스를 이해하고 적절한 어셈블리로드 및 IOC 등록을 보장하는 것이 플러그인로드와 관련된 문제를 피하는 데 중요합니다.
인용 :[1] https://stackoverflow.com/questions/73128508/how-to-load-plugins when-updating-to-mvmcross-6-4-2-from-5-6-2
[2] https://www.nuget.org/packages/mvvmcross/6.4.2
[3] https://github.com/mvvmcross/mvvmcross/issues/4364
[4] https://www.mvvmcross.com/documentation/plugins/plugins-development
[5] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md
[6] https://www.nuget.org/packages/plugin.ble/
[7] https://stackoverflow.com/q/33774785
[8] https://www.nuget.org/packages/mvvmcross.forms/6.4.2
[9] https://www.mvvmcross.com/mvvmcross-6.4.0-release/