所有,我正在考虑将我的应用程序从VB.net移植到基于C#的MONO项目,因此它可以在Windows和Mac上运行.但是,我需要一个Mac友好的替代WPF.它必须具有非常相似的功能.QML(通过QT)不是一个可行的选择,因为它为我们花费了太多的钱.
我正在尝试创建一个只有托盘图标的应用程序,而不会出现在任务栏中.(类似于Dropbox)我需要创建应用程序的Windows和Mac版本,所以我尝试使用MonoMac来创建Mac前端.
在MonoMac中创建仅托盘应用程序的最佳方法是什么?
我找到的所有资源都说要做两件事之一:
<key>LSUIElement</key><string>1</string>到Info.plist文件中.FinishedLaunching事件AppDelegate:NSApplication.SharedApplication.ActivationPolicy = NSApplicationActivationPolicy.Accessory;我已经尝试了这两种的所有组合,但似乎只要我尝试实例化C#System.Timers.Timer,图标就会重新出现在屏幕底部的底座中.我错过了OSX处理后台应用程序的方法吗?
我究竟做错了什么?是否有更好的方法来制作具有上部托盘图标但在OSX中没有底部停靠图标的后台应用程序?
(这与这个问题非常相似,但这个问题来自几年前,并且从未得到完全回答,所以我希望那里可能有更完整的答案.)
这是我到目前为止的代码:
public partial class AppDelegate : NSApplicationDelegate
{
MyServiceObject currentServiceObject;
public AppDelegate () { }
public override void FinishedLaunching (NSObject notification)
{
// Construct menu that will be displayed when tray icon is clicked
var notifyMenu = new NSMenu();
var exitMenuItem = new NSMenuItem("Quit My Application",
(a,b) => { System.Environment.Exit(0); }); // Just add 'Quit' …Run Code Online (Sandbox Code Playgroud) Xamarin.Mac和Mono:OSX之间的区别在哪里?我知道Xamarin买了Mono所以我认为它应该是一样的.但Mono:OSX似乎是免费的,而Xamarin.Mac至少需要399美元.那么两者之间的差异在哪里呢?
我试图在Mac Mavericks上的Monodevelop(3.0.5,启用MonoMac加载项)中打开一个项目.
我收到此错误:
MonoDevelop.Projects.Formats.MSBuild.UnknownSolutionItemTypeException: Unknown solution item type: {42C0BBD9-55CE-4FC1-8D90-A7348ABAFB23};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
at MonoDevelop.Projects.Formats.MSBuild.MSBuildProjectHandler.CreateSolutionItem (IProgressMonitor monitor, MonoDevelop.Projects.Formats.MSBuild.MSBuildProject p, System.String fileName, System.String language, System.String typeGuids, System.String itemType, System.Type itemClass) [0x00143] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-3.0-series/e159cf08/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs:369
Run Code Online (Sandbox Code Playgroud)
最相关的部分可能就是这个:
未知解决方案项目类型:{42C0BBD9-55CE-4FC1-8D90-A7348ABAFB23}; {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
这些UUID可以在我尝试打开<ProjectTypeGuids>的.csproj文件中找到.
FAE04EC0-301F-11D3-BF4B-00C04F79EFBC 是C#项目的UUID,42C0BBD9-55CE-4FC1-8D90-A7348ABAFB23 是MonoMac项目的UUID.我可以正常打开其他C#项目,所以我猜这是Monomac的一个问题?
Monodevelop启用了MonoMac插件.我尝试从源代码编译MonoMac,但它生成的DLL无法作为加载项(ZipException)加载.
我的Mono应用程序在Mac上崩溃并显示此消息(完整日志):
$ mono --debug bin/Debug/SparkleShare.app/Contents/MonoBundle/SparkleShare.exe
[...]
Stack overflow in unmanaged: IP: 0x26eb76, fault addr: 0xbf808ffc
[...]
Run Code Online (Sandbox Code Playgroud)
"in unmanaged"意味着堆栈溢出不在我的代码中(我只有托管代码),而是在我嵌入的库(SQLite,DotCmis,NewtonSoft.Json)或Mono的代码中.
即使我在调试模式下编译并运行,我得到的只是这两个十六进制.
问题:如何调查此堆栈溢出?任何诡计?
注意:相同的库(具有几乎相同的代码)在Linux和Windows上运行良好.
我有一个相当基本MainWindow.xib的源列表样式侧边栏.我通过将源列表模板拖到窗口中来创建它,窗口已经包含两个NSTableCellViews:HeaderCell和DataCell.
后者由图标(使用NSImageView)和标签(NSTextField)组成.相反,我想要标签和另一个较小的标签.在IB中,这看起来如下:

如果我专注于公正DataCell,它会相应地突出显示:

事实上,实际运行程序,它看起来不像模板:

请注意两者如何NSTextField一起被粉碎成一个.我的理解是,基于视图的NSOutlineViews(以及基于视图的NSTableViews)应该被设计为IB内的模板.相反,模板中的维度似乎大多被忽略了.
以下是从数据源设置视图值的代码:
public class TourSourceListDelegate : NSOutlineViewDelegate
{
public override bool IsGroupItem(NSOutlineView outlineView, MonoMac.Foundation.NSObject item)
{
return (item as TourSourceListDataSource.Item).IsHeader;
}
public override NSView GetView(NSOutlineView outlineView, NSTableColumn tableColumn, MonoMac.Foundation.NSObject item)
{
if (IsGroupItem(outlineView, item))
{
return outlineView.MakeView("HeaderCell", this);
}
else
{
var data = item as TourSourceListDataSource.Item;
var dataView = outlineView.MakeView("DataCell", this);
(dataView.Subviews[0] as …Run Code Online (Sandbox Code Playgroud) Miguel de Icaza今天宣布了一个名为MonoMac的新项目,使用Mono和C#为Mac开发应用程序:http://tirania.org/blog/archive/2010/Apr-19.html
在帖子中,他提供了到subversion存储库的链接,但有没有可供下载的构建版本?
我正在为Xamarin.Mac/ 创建绑定MonoMac.我想将dylib生成的内容嵌入到dll已完成Xamarin.iOS的[LinkWith]属性中.
有可能吗?如果是这样的话?或者我应该dylib从消费应用程序加载?再次在这种情况下,怎么样?
我想: -丢弃dylib在本地参考文件夹(不工作) -增加一个[assembly: MonoMac.RequiredFramework]属性(未找到dylib)
我正在尝试使用MonoGame为mac启动一个新项目.我已经安装了我认为必需的所有东西但是当我运行新项目时(单声道游戏徽标应该弹出)我在输出中得到这两行:
加载程序集:/Users/Kristin/Projects/Test/Test/bin/Debug/Test.app/Contents/MonoBundle/Test.exe加载程序集:/Users/Kristin/Projects/Test/Test/bin/Debug/Test.app /Contents/MonoBundle/MonoMac.dll [外部]
并且启动的新应用程序挂起而不会弹出窗口.我尝试按照此页面上的步骤操作:http://jamie.ly/wordpress/programming/software/setting-up-a-monogame-mac-application-with-xamarin-studio/
但似乎没有什么能解决我的问题.有任何想法吗?
背景:我的MonoMac应用程序使用sqlite3.0.8.6.dylib的自定义构建.
我需要确切的步骤让MyApp.app使用这个dylib.
以下是我采取的一些步骤:
将dylib复制到MyApp.app/Contents/SharedSupport.(相关问题:这是第三方dylibs的首选位置还是MyApp.app/Contents/Frameworks首选?)
更改了库的已安装名称,以使其与新位置匹配.
MyApp.app/Contents/SharedSupport> otool -L libsqlite3.0.8.6.dylib
libsqlite3.0.8.6.dylib:
@executable_path/../SharedSupport/libsqlite3.0.8.6.dylib (compatibility version 9.0.0, current version 9.6.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
Run Code Online (Sandbox Code Playgroud)问题
MonoMac众神会帮助解决一个简单的解决方案吗?我花了几个月的时间,一直在努力让它发挥作用.
请提供确切的步骤 - 这个问题与细节有关.
monomac ×10
mono ×7
c# ×5
macos ×4
dylib ×2
monodevelop ×2
xamarin.mac ×2
bundle ×1
installation ×1
monogame ×1
nstextfield ×1
unmanaged ×1
vb.net ×1
wpf ×1
xamarin ×1
xcode5 ×1
xib ×1