面向macOS的Xamarin.Forms

时间:2018-09-20 00:30:49

标签: macos xamarin.forms visual-studio-mac

我正在使用Visual Studio for Mac 7.6.6创建针对macOS的Xamarin.Forms应用程序(与Windows上运行的内容共享)。我创建一个新项目,然后选择

  1. 多平台应用|空白表格应用程序。点击下一步
  2. 配置空白表格应用程序。有目标平台:Android和iOS。 (macOS没有任何功能)。由于我尚未安装iOS和android的构建工具包,因此这两个复选框均被禁用。因此,该向导页面上的“下一步”按钮被禁用。

我该如何进行?我认为没有办法为此使用“新建项目”向导。

我遇到了old post,是从Xamarin Cocoa应用程序开始并使用NuGet来放置Xamarin Forms功能的,但是却不懂代码

LoadApplication(new App());  // <-- don't know what App is

我怀疑VS Mac和Xamarin.Forms处于不同步状态。有没有人得到这个工作?

2 个答案:

答案 0 :(得分:3)

我建议遵循SushiHangover的建议,因为这很简单,这是您已经做过的事情:

  1. 将新的CocoaApp项目添加到您的解决方案中。
  2. 将Xamarin.Forms NuGet软件包安装到CocoaApp中。
  3. 从CocoaApp项目中引用共享项目或.NET Standard项目。
  4. 编辑info.plist并删除源条目(NSMainStoryboardFile)。
  5. 更改AppDelegate以从Xamarin.Forms.Platform.MacOS.FormsApplicationDelegate派生。
  6. 在AppDelegate的DidFinishLaunching中,添加代码以初始化Xamarin.Forms。
  7. 在AppDelegate的MainWindow属性中创建一个新的NSWindow。

AppDelegate.cs:

[Register("AppDelegate")]
public class AppDelegate : Xamarin.Forms.Platform.MacOS.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)
    {
        Xamarin.Forms.Forms.Init();
        LoadApplication(new App());

        base.DidFinishLaunching(notification);
    }

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

但是,Visual Studio for Mac确实包含带有Xamarin.Forms项目模板的Mac项目。但是,它当前不在“新项目”对话框中公开。您可以从此模板创建Mac Forms项目,但是它比SushiHangover建议并使用的工作还要多。

  1. 将Xamarin.Forms项目模板安装到.NET Core项目模板中

    dotnet new --install "/Applications/Visual Studio.app/Contents/Resources/lib/monodevelop/AddIns/Xamarin.Forms.Addin/Templates/Xamarin.Templates.Multiplatform.0.0.1.nupkg"

  2. 创建一个包括Mac项目的新Forms项目(您可能要查看并设置其他模板参数-以下内容将使用Android,iOS,Mac,UWP和一个Shared项目创建一个空白Forms应用)。

  3. >

    dotnet new forms-app --CreateMacProject -k blank

  4. 在刚创建的项目的父目录中创建一个新的空白解决方案(其他-其他-空白解决方案)。

  5. 将所有创建的项目添加到解决方案中。

然后,您可以构建和运行包含Xamarin.Forms的Mac项目。

请注意,您可能希望从.NET Core项目模板中删除Xamarin.Forms项目模板,可以通过运行以下命令来完成该操作:

dotnet new --debug:reinit

答案 1 :(得分:2)

除了批准的答案(最近的更新不完整)之外,您现在还必须再执行一步。 在Mac项目的主类中链接delagate

main.cs:

static class MainClass
{
   static void Main(string[] args)
   {
       NSApplication.Init();
       NSApplication.SharedApplication.Delegate = new AppDelegate();
       NSApplication.Main(args);
    }
}

注意。我的编辑被拒绝,并且不允许添加评论。因此,我添加了一个补充性答案,以帮助那些现在寻求帮助的人。