當您開發一個 Xamarin.Forms 專案,並且在 Android 平台下進行測試,一切都可以正常運作與執行;不過,您切換到 iOS 平台下,執行同樣專案,卻得到類似下圖的異常錯誤。
例外異常訊息為
Microsoft.Practices.Unity.ResolutionFailedException: Resolution of the dependency failed, type = "System.Object", name = "TravelExpensesListPage".
Exception occurred while: Calling constructor XFDoggy.Views.TravelExpensesListPage().
Exception is: FileNotFoundException - Could not load file or assembly 'Behaviors' or one of its dependencies
-----------------------------------------------
At the time of the exception, the container was:
Resolving XFDoggy.Views.TravelExpensesListPage,TravelExpensesListPage (mapped from System.Object, TravelExpensesListPage)
Calling constructor XFDoggy.Views.TravelExpensesListPage()
由上述的錯誤訊息,看到的是
'Behaviors'
這個組件似乎找不到,這樣的情況也有可能發生在 Android 平台下。
要解決這樣的問題,您需要在
- iOS 平台在 AppDelegate.cs (FinishedLaunching 方法) 內,產生這個組件的一個物件,或者參考該 NuGet 套件的使用說明,使用初始化的動作。
- Android 平台在 MainActivity.cs (OnCreate 方法內) 內,產生這個組件的一個物件,或者參考該 NuGet 套件的使用說明,使用初始化的動作。
解決方法
請打開 AppDelegate.cs 加入底下程式碼
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
// 需要加入這行解決無法載入組建的問題
var fooBehaviorBase = new Behaviors.BehaviorBase<Xamarin.Forms.ListView>();
global::Xamarin.Forms.Forms.Init();
LoadApplication(new App(new iOSInitializer()));
return base.FinishedLaunching(app, options);
}
若不知道要產生甚麼物件,可以打開這個組件的物件瀏覽器,進行查看