UnityのAssemblyDefinitionの推奨設定とその理由
UnityのAssembly Definitionの推奨設定とその理由の解説(メモ)です。
4のところでハマることが多かったのが主な動機ですが。
どちらかというとAssemblyDefinitionを使いこなしている方向けですが、普段なんとなく設定しているという方にも参考になるかもしれません。
1. Allow 'unsafe' Code -> false
基本false
で、unsafeを触る時だけtrue
にします。
2. Auto Referenced -> false(可能なら)
基本false
が望ましいですが、いろんな人に使ってもらうライブラリの場合はtrue
にする場合もあります。
false
にすると利用者側もAssembly Definitionの作成が必須になりますが、Unity初心者の方だと扱えない場合もあるためです。
3. No Engine References -> true(可能なら)
UnityのAPIに依存しない、Pure C#なスクリプトしか含まれていない場合はtrue
にできます。
そうでない場合はfalse
に設定します。
4. Override References -> true
false
のままだと、プロジェクトに含まれているDLLで Auto Reference
に設定されているものが自動的に参照されます。
特に注意が必要なのが、Test Frameworkを利用する時に付いてくる nunit.framework
で、RiderでAssertionのコードを書いているとRuntime向けのスクリプトに時々間違ってNUnitのAssertionが混入してしまう場合があります。
このDLLへの参照がRuntime向けのスクリプトにあるままだと、アプリケーションのビルド時に失敗しますが、Riderだとusing
部分を自動で隠してくれるためビルド時に初めて気づく場合も多く注意が必要です。
true
に設定し、必要なDLL参照をAssembly Referencesの項目に手動で設定する運用がおすすめです。
5. Use GUIDs -> true
false
だとassemblyDefinitionのリネームで参照が剥がれてしまいます。
Discussion