Xamarin.Forms 针对 macOS
Xamarin.Forms targeting macOS
我正在使用 Visual Studio for Mac 7.6.6 创建一个针对 macOS 的 Xamarin.Forms 应用程序(与 Windows 上的某些 运行 共享).我创建了一个新项目 select
- 多平台应用 |空白表格应用程序。单击下一步
- 配置您的空白表单应用程序。有目标平台: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 在最前沿不同步。有人让这个工作吗?
我建议遵循 SushiHangover 的建议,因为这更简单,而您已经这样做了:
- 向您的解决方案添加一个新的 CocoaApp 项目。
- 将 Xamarin.Forms NuGet 包安装到您的 CocoaApp 中。
- 从您的 CocoaApp 项目中引用共享项目或 .NET Standard 项目。
- 编辑 info.plist 并删除源条目 (NSMainStoryboardFile)。
- 更改 AppDelegate 以派生自 Xamarin.Forms.Platform.MacOS.FormsApplicationDelegate.
- 更新 Main.cs 以初始化 AppDelegate
- 在 AppDelegate 的 DidFinishLaunching 添加代码来初始化 Xamarin.Forms。
- 创建一个新的 NSWindow,它应该从 AppDelegate 中的 MainWindow 属性 返回。
Main.cs:
static class MainClass
{
static void Main(string[] args)
{
NSApplication.Init();
NSApplication.SharedApplication.Delegate = new AppDelegate();
NSApplication.Main(args);
}
}
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 建议的和您已经使用的要多一些工作。
将 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"
创建一个新的 Forms 项目,包括 Mac 项目(您可能想要查看并设置其他模板参数 - 下面创建一个空白的 Forms 应用程序 Android,iOS、Mac、UWP 和共享项目)。
dotnet new forms-app --CreateMacProject -k blank
在刚刚创建的项目的父目录中新建一个空白解决方案(Other - Miscellaneous - Blank Solution)
- 将创建的所有项目添加到解决方案中。
然后您可以构建 运行 Mac 项目,其中包括 Xamarin.Forms.
请注意,您可能希望从 .NET Core 项目模板中删除 Xamarin.Forms 项目模板,您可以通过 运行 执行以下操作:
dotnet new --debug:reinit
除了最近的更新不完整的已批准答案之外,现在您还需要执行一个步骤。
Link Mac 主项目中的委托 class
main.cs:
static class MainClass
{
static void Main(string[] args)
{
NSApplication.Init();
NSApplication.SharedApplication.Delegate = new AppDelegate();
NSApplication.Main(args);
}
}
注意。我的编辑被拒绝,我不允许添加评论。所以我添加了一个补充答案来帮助那些现在寻求帮助的人。
我正在使用 Visual Studio for Mac 7.6.6 创建一个针对 macOS 的 Xamarin.Forms 应用程序(与 Windows 上的某些 运行 共享).我创建了一个新项目 select
- 多平台应用 |空白表格应用程序。单击下一步
- 配置您的空白表单应用程序。有目标平台: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 在最前沿不同步。有人让这个工作吗?
我建议遵循 SushiHangover 的建议,因为这更简单,而您已经这样做了:
- 向您的解决方案添加一个新的 CocoaApp 项目。
- 将 Xamarin.Forms NuGet 包安装到您的 CocoaApp 中。
- 从您的 CocoaApp 项目中引用共享项目或 .NET Standard 项目。
- 编辑 info.plist 并删除源条目 (NSMainStoryboardFile)。
- 更改 AppDelegate 以派生自 Xamarin.Forms.Platform.MacOS.FormsApplicationDelegate.
- 更新 Main.cs 以初始化 AppDelegate
- 在 AppDelegate 的 DidFinishLaunching 添加代码来初始化 Xamarin.Forms。
- 创建一个新的 NSWindow,它应该从 AppDelegate 中的 MainWindow 属性 返回。
Main.cs:
static class MainClass
{
static void Main(string[] args)
{
NSApplication.Init();
NSApplication.SharedApplication.Delegate = new AppDelegate();
NSApplication.Main(args);
}
}
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 建议的和您已经使用的要多一些工作。
将 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"
创建一个新的 Forms 项目,包括 Mac 项目(您可能想要查看并设置其他模板参数 - 下面创建一个空白的 Forms 应用程序 Android,iOS、Mac、UWP 和共享项目)。
dotnet new forms-app --CreateMacProject -k blank
在刚刚创建的项目的父目录中新建一个空白解决方案(Other - Miscellaneous - Blank Solution)
- 将创建的所有项目添加到解决方案中。
然后您可以构建 运行 Mac 项目,其中包括 Xamarin.Forms.
请注意,您可能希望从 .NET Core 项目模板中删除 Xamarin.Forms 项目模板,您可以通过 运行 执行以下操作:
dotnet new --debug:reinit
除了最近的更新不完整的已批准答案之外,现在您还需要执行一个步骤。 Link Mac 主项目中的委托 class
main.cs:
static class MainClass
{
static void Main(string[] args)
{
NSApplication.Init();
NSApplication.SharedApplication.Delegate = new AppDelegate();
NSApplication.Main(args);
}
}
注意。我的编辑被拒绝,我不允许添加评论。所以我添加了一个补充答案来帮助那些现在寻求帮助的人。