首页 > 解决方案 > 有没有办法修复使用 Xamarin C# 找不到的 Runtime.cs 文件

问题描述

我尝试添加 AdMob,我认为错误来自更改代码,AppDelegate.cs但我不确定 100%。

我的代码如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using Foundation;
using UIKit;

namespace WeatherLocationInfo.iOS
{
    // The UIApplicationDelegate for the application. This class is responsible for launching the 
    // User Interface of the application, as well as listening (and optionally responding) to 
    // application events from iOS.
    [Register("AppDelegate")]
    public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
    {
        //
        // This method is invoked when the application has loaded and is ready to run. In this 
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        [Obsolete]
#pragma warning disable CS0809 // Obsolete member overrides non-obsolete member
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
#pragma warning restore CS0809 // Obsolete member overrides non-obsolete member
        {
            Xamarin.Forms.Forms.Init();
            Google.MobileAds.MobileAds.Configure(AppConstants.AppId);
            LoadApplication(new App());

            return base.FinishedLaunching(app, options);
        }


   }
}

错误可能来自哪里?

我将此链接Xamarin Forms AdMob闲置,当我下载他工作的项目时。当我仅为 iOS 项目复制/粘贴和下载库时,我收到Runtime.cs file not found.了有没有办法解决这个错误?

未找到 Runtime.cs 文件

我有一个名为AdMobViewRenderer.cs我认为错误来自那里的文件或

appDelegate.cs

所以 AdMobViewRenderer.cs 中的代码是:

using System.ComponentModel;
using Foundation;
using Google.MobileAds;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
using WeatherLocationInfo.Controls;
using WeatherLocationInfo.iOS.Implementations;

[assembly: ExportRenderer(typeof(AdmobControl), typeof(AdMobViewRenderer))]
namespace WeatherLocationInfo.iOS.Implementations
{
    [Protocol]
    public class AdMobViewRenderer : ViewRenderer<AdmobControl, BannerView>
    {
        [System.Obsolete]
#pragma warning disable CS0809 // Obsolete member overrides non-obsolete member
        protected override void OnElementChanged(ElementChangedEventArgs<AdmobControl> e)
#pragma warning restore CS0809 // Obsolete member overrides non-obsolete member
        {
            base.OnElementChanged(e);
            if (Control == null)
            {
                SetNativeControl(CreateBannerView());
            }
        }

        [System.Obsolete]
#pragma warning disable CS0809 // Obsolete member overrides non-obsolete member
        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
#pragma warning restore CS0809 // Obsolete member overrides non-obsolete member
        {
            base.OnElementPropertyChanged(sender, e);
            Control.AdUnitID = Element.AdUnitId;
        }

    [System.Obsolete]
    private BannerView CreateBannerView()
    {
        var bannerView = new BannerView(AdSizeCons.SmartBannerPortrait)
        {
            AdUnitID = Element.AdUnitId,
            RootViewController = GetVisibleViewController()
        };

        bannerView.LoadRequest(GetRequest());

        Request GetRequest()
        {
            var request = Request.GetDefaultRequest();
            return request;
        }

        return bannerView;
    }

    private UIViewController GetVisibleViewController()
    {
        var windows = UIApplication.SharedApplication.Windows;
        foreach (var window in windows)
        {
            if (window.RootViewController != null)
            {
                return window.RootViewController;
            }
        }
        return null;
    }
}

}

标签: c#xamarinadmob

解决方案


推荐阅读