Xamarin.MacでResource Bundleを利用する

提供: MonoBook
ナビゲーションに移動 検索に移動

Xamarin.Macのプロジェクト直下のResourcesフォルダに画像などの各種ファイルを突っ込んでおくとアプリの一部として配布することができる。

パスの取得[編集 | ソースを編集]

いわゆるアイコンとしてみ見えるMacアプリ拡張子が「.app」のフォルダであり、その中に本当の実行ファイルやリソースなどが詰め込まれている。 プラットフォームによってはリソースファイルといえばひとつのバイナリに固められて専用APIで取り出したりするが、Mac OSXの場合は単純に「○○○.app/Contents/Resources/」(○○○はアプリ)の中にファイルなどとして格納されている。

アプリのルートディレクトリはNSBundle.MainBundle.BundlePathプロパティで取得できるので、あとは決め打ちえ「Contents」と「Resources」を付け加えてやればよい。なお、ディレクトリセパレータWindowsではバックスラッシュだがMacではスラッシュなので、そこら辺はSystem.IO.Path.Combineメソッドに任せておいた方が無難だと思われる。

using System.IO;
using Foundation;

// 中略

var path = Path.Combine(NSBundle.MainBundle.BundlePath, "Contents", "Resources");
var file = "images-blue.png";
var image = new NSImage(Path.Combine(path,file));

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]