Xamarin Forms MacOS 和 NetStandard
Xamarin Forms MacOS and NetStandard
我刚刚开始研究这个问题,运行 遇到了一个问题,该问题阻止我 运行 安装我的 MacOS 应用程序。我已按照此博客 post:
中详述的所有步骤进行操作
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/
但出于某种原因,它声称找不到我的应用程序 class。尽管它是在设计时被发现的,并且被着色为好像它是一种类型,它甚至在智能感知中显示为 class。当我编译项目时出现错误:
MacOS/AppDelegate.cs(40,40):错误 CS0234:类型或命名空间名称 'App' 在命名空间 'Oracle' 中不存在(是否缺少程序集引用? ) (CS0234) (Oracle.MacOS)
作为程序集参考绝对不会丢失,因为它在智能感知中。还有其他人看到这个吗?问题是什么?有办法解决这个问题吗?
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)
3 年后.. 但今天我尝试为 mac 创建我的第一个 xamarin 表单应用程序并且遇到了同样的错误。
要重现此错误,您需要 2 个项目,例如“MyApp”(网络标准)和“MyApp.Mac”(Xamarin.Mac)。
要修复它,您需要:
- 将共享项目从“MyApp”重命名为“MyApp.Shared”。
- 检查共享项目的属性。名称和默认命名空间应为“MyApp.Shared”。
- 将 link 从 mac 项目删除到共享项目。
- 再次添加 link 到共享项目。
我刚刚开始研究这个问题,运行 遇到了一个问题,该问题阻止我 运行 安装我的 MacOS 应用程序。我已按照此博客 post:
中详述的所有步骤进行操作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/
但出于某种原因,它声称找不到我的应用程序 class。尽管它是在设计时被发现的,并且被着色为好像它是一种类型,它甚至在智能感知中显示为 class。当我编译项目时出现错误:
MacOS/AppDelegate.cs(40,40):错误 CS0234:类型或命名空间名称 'App' 在命名空间 'Oracle' 中不存在(是否缺少程序集引用? ) (CS0234) (Oracle.MacOS)
作为程序集参考绝对不会丢失,因为它在智能感知中。还有其他人看到这个吗?问题是什么?有办法解决这个问题吗?
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)
3 年后.. 但今天我尝试为 mac 创建我的第一个 xamarin 表单应用程序并且遇到了同样的错误。 要重现此错误,您需要 2 个项目,例如“MyApp”(网络标准)和“MyApp.Mac”(Xamarin.Mac)。
要修复它,您需要:
- 将共享项目从“MyApp”重命名为“MyApp.Shared”。
- 检查共享项目的属性。名称和默认命名空间应为“MyApp.Shared”。
- 将 link 从 mac 项目删除到共享项目。
- 再次添加 link 到共享项目。