Xamarin表示MacOS和NetStandard

时间:2017-07-24 09:48:23

标签: c# macos xamarin.forms .net-standard

我刚刚开始关注此问题并遇到阻碍我运行MacOS应用程序的问题。我已经按照本博文中详述的所有步骤进行了操作:

https://blog.xamarin.com/preview-bringing-macos-to-xamarin-forms/

XAML所在的Xamarin Forms项目已使用以下说明从PCL更改为NetStandard项目:

https://blog.xamarin.com/building-xamarin-forms-apps-net-standard/

但由于某种原因,它声称它无法找到我的App类。尽管它在设计时被发现并且颜色好像它是一种类型,它甚至在intellisense中作为一个类出现。当我编译项目时,它出错:

MacOS / AppDelegate.cs(40,40):错误CS0234:命名空间“Oracle”中不存在类型或命名空间名称“App”(您是否缺少程序集引用?)(CS0234)(Oracle.MacOS) )

绝对不会错过作为汇编参考,因为它在intellisense中。有人见过这个吗?问题是什么?有办法解决这个问题吗?

App.Xaml.cs

[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
namespace Oracle
{
    public partial class App : Application
    {
        public App()
        {
            InitializeComponent();

            SetMainPage();
        }

        public static void SetMainPage()
        {
            Current.MainPage = new TabbedPage
            {
                Children =
                {
                    new NavigationPage(new ItemsPage())
                    {
                        Title = "Browse",
                        Icon = Device.OnPlatform<string>("tab_feed.png",null,null)
                    },
                    new NavigationPage(new AboutPage())
                    {
                        Title = "About Test",
                        Icon = Device.OnPlatform<string>("tab_about.png",null,null)
                    },
                }
            };
        }
    }
}

AppDelegate.cs

[Register("AppDelegate")]
public class AppDelegate : FormsApplicationDelegate
{
    NSWindow _window;
    public AppDelegate()
    {
        var style = NSWindowStyle.Closable | NSWindowStyle.Resizable | NSWindowStyle.Titled;

        var rect = new CoreGraphics.CGRect(200, 1000, 1024, 768);
        _window = new NSWindow(rect, style, NSBackingStore.Buffered, false);
        _window.Title = "Xamarin.Forms on Mac!";
        _window.TitleVisibility = NSWindowTitleVisibility.Hidden;
    }

    public override NSWindow MainWindow
    {
        get { return _window; }
    }

    public override void DidFinishLaunching(NSNotification notification)
    {
        Forms.Init();
        LoadApplication(new Oracle.App());
        base.DidFinishLaunching(notification);
    }

    public override void WillTerminate(NSNotification notification)
    {
        // Insert code here to tear down your application
    }
}

更新 经过一些修修补补,我已经解决了第一个问题,现在我正在看

错误MM0023:应用程序名称“Oracle.exe”与另一个用户程序集冲突。 (MM0023)(Oracle.MacOS)

1 个答案:

答案 0 :(得分:0)

3 年后.. 但今天我尝试为 mac 创建我的第一个 xamarin 表单应用程序,但遇到了同样的错误。 要重现此错误,您需要 2 个项目,例如“MyApp”(网络标准)和“MyApp.Mac”(Xamarin.Mac)。

要修复它,您需要:

  1. 将共享项目从“MyApp”重命名为“MyApp.Shared”。
  2. 检查共享项目的属性。名称和默认命名空间应为“MyApp.Shared”。
  3. 删除从 mac 项目到共享项目的链接。
  4. 再次添加指向共享项目的链接。