フレームワークは MonoDevelop によって生成されるため、XCode プロジェクトに単純に追加することはできません。その意味で「実際の」プロジェクトではありません。
いくつかのオプションがあります。
1 - C# で独自の実装を作成する
2 - オープン ソースの実装 (Chromium タブなど) を選択し、C# に移植します。これは機能するはずですが、明らかに時間がかかります。また、MonoMac にはまだ存在しない一部の Cocoa API にアクセスする必要があることに気付くかもしれません。回避策を見つけるか、それらを実装する必要があります。
3 - ネイティブ フレームワークをアプリにバインドできます。おそらく、あなたが興味を持っているフレームワークのためにこれをすでに行っている人を見つけることができます。または自分で行うこともできます。
私は 1 日か 2 日、自分で #3 に苦労していましたが、最終的にすべてを理解したので、そのプロセスをあなたと共有します。これが役立つかもしれません。
クロム タブ ソースをダウンロードし、フレームワークをコンパイルしました。i386 のみとしてコンパイルする必要があります。MonoMac は現在 32 ビット ランタイムのみを出荷しているため
ChromiumTabs.framework をプロジェクトに追加し、プレビルド スクリプトを設定して ${TargetDir}/${ProjectName}.app/Contents/Frameworks/ にコピーしました。
NSApplication.Init() を呼び出す前に、Main 内でフレームワークを手動でロードします。
var baseAppPath = Directory.GetParent(Directory.GetParent(System.AppDomain.CurrentDomain.BaseDirectory).ToString());
var chromiumPath = baseAppPath + "/Frameworks/ChromiumTabs.framework/ChromiumTabs";
var hresult = Dlfcn.dlopen(chromiumPath, 0); // Non-zero result indicates success
次に、parse.exe (ソースからコンパイルすると MonoMac で使用可能) を使用して、フレームワークから .h ファイルをフィードします。生成された出力を使用して、バインディングを定義するインターフェイスを作成します (バインディング タイプに関する適切なドキュメントがここにあります)。例えば:
using System;
using System.Drawing;
using MonoMac.Foundation;
using MonoMac.AppKit;
namespace ChromiumTabs
{
[BaseType (typeof (NSWindowController))]
interface CTTabWindowController {
}
[BaseType (typeof (CTTabWindowController))]
interface CTBrowserWindowController {
[Export ("browser")]
CTBrowser Browser { get; }
[Export ("initWithBrowser:")]
IntPtr Constructor (CTBrowser browser);
}
[BaseType (typeof (NSObject))]
interface CTBrowser {
[Export ("addBlankTabInForeground:")]
CTTabContents AddBlankTabInForeground (bool foreground);
[Export ("createBlankTabBasedOn:")]
CTTabContents CreateBlankTabBasedOn (CTTabContents baseContents);
}
[BaseType (typeof (NSDocument))]
interface CTTabContents {
[Export ("initWithBaseTabContents:")]
IntPtr Constructor ([NullAllowed]CTTabContents baseContents);
[Export ("viewFrameDidChange:")]
void ViewFrameDidChange (RectangleF newFrame);
}
}
次に、その .cs ファイルを bmac.exe にフィードします (指定する必要がある引数については、ヘルプを確認してください)。これにより、プロジェクトで参照できるマネージ DLL が出力されます。
これで、新しいバインディングを使用できるようになります!
ライブラリを起動して実行するのに十分な、最小限のバインドをライブラリに行いました。こちらからダウンロードできます。