XAML in Xamarin.Forms 基礎篇 電子書

XAML in Xamarin.Forms 基礎篇 電子書
XAML in Xamarin.Forms 基礎篇 電子書

Xamarin.Forms 快速入門 電子書

Xamarin.Forms 快速入門 電子書
Xamarin.Forms 快速入門 電子書

2016/09/22

Xamarin.Forms 解決 FileNotFoundException - Could not load file or assembly 的問題

當您開發一個 Xamarin.Forms 專案,並且在 Android 平台下進行測試,一切都可以正常運作與執行;不過,您切換到 iOS 平台下,執行同樣專案,卻得到類似下圖的異常錯誤。
FileNotFoundException
例外異常訊息為
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);
        }
若不知道要產生甚麼物件,可以打開這個組件的物件瀏覽器,進行查看
Behaviors物件瀏覽器

沒有留言:

張貼留言