Xamarin.Mac リンカー オプション

リンクは、使用していないコードを削除してアプリケーションのサイズを縮小する強力な最適化ツールです。

概要

プロジェクトで使用するターゲット フレームワークに基づいて、使用可能なリンカー オプションが制限されることがあります。 その理由は、リンクにはアプリケーションで使用されるすべての型のオブジェクト グラフの作成が必要ですが、Full (または Unsupported) では System.Configuration が原因でこれが可能でないためです。

次の 4 つのオプションを使用できます。

  • None - すべてのリンクを無効にします。 モダンのデバッグ構成と Full のすべての構成の既定です。
  • SDK - ユーザー アセンブリを除くすべての SDK アセンブリをリンクします。 モダンのリリース構成の既定です。 Full では使用できません。
  • Full - すべてのアセンブリをリンクします。 これには、リンカーで安全に使用できるユーザー コードが必要です、詳しくは、注意事項をご覧ください。 Full では使用できません。
  • Platform - Xamarin.Mac.dll だけをリンクします。 詳細については以下を参照してください。

プラットフォームのリンク

Full のターゲット フレームワークを使用したアプリケーションのリンクは一般に安全ではありませんが、非常に制限された形式のリンクが必要なシナリオがいくつかあります。

たとえば、macOS App Store に送信されるアプリケーションは、いくつかの非推奨の API (QTKit など) を参照してはなりません。これらの API の一部は Xamarin.Mac にバインディングが含まれます。 アプリケーションがこれらのバインディングを呼び出さない場合でも、呼び出しは SDK 内に存在するため、拒否されます。

プラットフォームのリンクは、アプリケーションと BCL が安全でないリンカーであると想定し、Xamarin.Mac.dll から使用していないコードを削除します。

Xamarin.Mac.dll 型にリフレクションを実行しないすべてのアプリケーションは、不要な型の削除によりスタートアップが若干向上します。

モダン アプリケーションはより強力な SDK オプションを使用できるため、プラットフォームのリンクは一般に Full のターゲット フレームワークを使用するアプリケーションにのみ役立ちます。

リンカーの構成の設定

Xamarin.Mac プロジェクトのリンカー構成に変更するには、次の操作を行います。

  1. Visual Studio for Mac で Xamarin.Mac プロジェクトを開きます。

  2. ソリューション エクスプローラーで、プロジェクト ファイルをダブルクリックし、[プロジェクト オプション] ダイアログ ボックスを開きます。

  3. [Mac ビルド] タブで、アプリケーションのニーズに適した [リンカーの動作] の種類を選択します。

    Choose which linker behavior to use

  4. Full のターゲット フレームワークのプラットフォーム リンクは、今後更新されるまで IDE に表示されません。 それまでは、代わりに --linkplatform追加の mmp 引数に追加します。

  5. [OK] をクリックして変更内容を保存します。