【问题标题】:Does Xamarin.mac Support GTK# User InterfaceXamarin.mac 是否支持 GTK# 用户界面
【发布时间】:2015-09-06 13:15:26
【问题描述】:

我有一个使用 GTK# 为 UI 使用 Mono.Mac 编码的应用程序。我现在可以访问 Xamarin.mac。我正在尝试将 mono.mac 解决方案迁移到 xamarin.mac。我正在尝试将代码从 mono.mac 复制粘贴到一个新的 xamarin.mac 项目中,但是 Xamarin.mac 项目中没有 GUI 构建器。那么 Xamarin.mac 是否支持 GTK#?有没有更好的方法可以迁移?

编辑:

我的目标是将单声道运行时与应用程序包捆绑在一起,这样用户就无需手动安装它。

【问题讨论】:

  • MonoMac 和 Xamari.Mac 强调 Cocoa,所以使用 GTK# 会很奇怪。
  • @LexLi 如果你下载 xamarin studio free(Mono.mac) 版本,你只能找到创建 GTK# 应用程序的选项
  • 迁移?您是指通过 XWT 或 Cocoa 将您的 GTK# 界面转换为 Native OS-X,还是仅使用您的 Xam.Mac 许可证来创建一个独立的应用程序包。如果只是应用程序包,当您打开 monomac 项目时,您可以选择将其转换为 Xam.Mac 以更新项目 guid(首先备份您的项目,以便您拥有旧的 guid,因此如果需要,monomac 仍然是一个选项) .除非您也将代码库迁移到统一 OSX/iOS api,否则无需更改任何其他内容。
  • 您应该了解 Xamarin Studio、MonoMac 和 Xamarin.Mac 之间的区别。我可以看到你只是误解了所有这些,它们是不可互换的。
  • @RobertN 是的,我的意思是将 Mono.Mac 项目转换为 Xam.mac。我唯一的目的是将单声道运行时与应用程序捆绑在一起,并为苹果商店创建一个自包含的应用程序包。程序 UI 是在 GTK# 中设计我不想使用 XCODE 为 xamarin.mac 再次创建它。我尝试使用许可的 Xamarin Studiod(安装了 xamarin.mac)打开 mono.mac 项目,但没有显示转换它的选项。跨度>

标签: c# macos xamarin mono xamarin.mac


【解决方案1】:

MonoMac .csproj 信息:

首先,如果您没有升级到 Xam.Mac 对话框,可能是由于 MonoMac 项目文件中的以下一行或两行:

<SuppressXamMacUpsell>True</SuppressXamMacUpsell>
<SuppressXamMacMigration>True</SuppressXamMacMigration>

如果它们存在,只需编辑 csproj 文件(右键单击项目文件:选择工具/编辑文件),删除这些行,然后保存应该自动刷新项目的文件,如果没有,关闭并重新打开解决方案/项目。

当然,这假设项目在 csproj 文件中被标记为 MonoMac 类型项目

此时我假设您的项目最初是作为普通 .Net 项目创建的,并且您手动添加 MonoMac 作为参考,因此 XamStudio 和 xbuild 不会将其视为“特殊项目类型”。

在项目文件中查找 ProjectTypeGuids 标签:

以下是一个 C#/MonoMac 项目:

<ProjectTypeGuids>{948B3504-5B70-4649-8FE4-BDE1FB46EC69};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

假设您只找到 C# 标记而不是 MonoMac/Xam.Mac 标记,我将更改项目类型并添加 MonoMac,然后允许 XamStudio 将其转换为 Xamarin.Mac(实际上只是更新 guid 和 MonoMac 参考到 XamMac)..

当前项目:

<ProjectTypeGuids>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

编辑到:

<ProjectTypeGuids>{948B3504-5B70-4649-8FE4-BDE1FB46EC69};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

XamMac 转换后:

<ProjectTypeGuids>{42C0BBD9-55CE-4FC1-8D90-A7348ABAFB23};{FAE04EC0-301F-11D3-BF4B 00C04F79EFBC}</ProjectTypeGuids>

此时,您的项目应该被视为 XamMac 类型,并且现在应该公开菜单中的捆绑、额外的项目选项等。

标准 C#/.Net 项目标签:

{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}

Xamarin.Mac 项目标签:

{42C0BBD9-55CE-4FC1-8D90-A7348ABAFB23}

MonoMac 项目标签:

{948B3504-5B70-4649-8FE4-BDE1FB46EC69}

【讨论】:

  • 非常感谢您的详细回答。只是为了澄清我已经使用 Project>.NET>GTK#2.0 Project 创建了该项目。这是 Mono.mac 吗?在这一点上完全糊涂了。
  • 不,GTK#2 项目不是 MonoMac 项目。不确定“GTK”项目是否真的有一个唯一的项目 guid……嗯……通过项目向导创建一个并检查 csproj 文件中的 ProjectTypeGuids 标签。现在我想了想,我想知道 XS/xbuild 是否可以在这个项目组合中工作以使用捆绑功能。我知道您可以在 GTK# 应用程序中引用/使用 MonoMac/Xam.Mac api,但为了获得捆绑功能,您会颠倒过来……好吧,创建一个测试解决方案/项目并将其更改为 MonoMac 项目,将其转换为 XamMac 并查看它是否有效....
  • 它有一个 GUID。我将尝试用 Mono.mac GUID 替换它,然后将其转换为 Xam.mac 并回复给你。我现在没有 Mac。
  • 我付出了一些真正的努力来设计 GTK# 界面(你帮助我解决了我的一些问题)。应用程序几乎准备好了,我要去测试它。但是现在是捆绑 Mono Runtime 的问题。你认为如果投入额外的工作在新的 Xamarin.Mac 项目中创建可可接口并从 GTK# 项目中复制所有代码。我会以某种方式受益吗?
  • 我尝试将 GUID 更改为 Mono.Mac,但项目仍以 GTK# 应用程序打开。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-13
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 2011-12-03
  • 2017-09-30
相关资源
最近更新 更多