Assembly Definition Filesについて質問を受けたので、私も曖昧な部分をちょっと調べついでに備忘録にしておきますね。
概要の方は安定のテラシュールですが、↓を参考にしてください。
Assembly Definition Files の有効範囲
で、Assembly Definition Files の有効範囲はどこまで?という問題があります。つまり直下だけなのか、子フォルダまで伝搬するのか、ということです。
では試してみました。
まずARKit のルートに Assembly Definition Files (この場合UnityARKit)を置いてみます。
その子フォルダ(この場合、ARKitRemote)のソースを見ると、Inspectorに「UnityARKit.dll」と出ていますね
その孫フォルダExampleの中身とかもやはり伝搬していてくれるわけです。
というわけで全部有効範囲ということになりますね。
じゃあ子フォルダにもう1個おくとどうなるか。例えばExampleに Assembly Definition Files を置くとどうなるか?
Example の方で別の Assembly Definition Files を作られるわけです。そうなると先ほど作ったARKit のルートの Assembly Definition Files とは別のnamespace となるので、エラーが出てしまうわけです。
これを回避するにはReferences機能の出番となるのです。
References機能
これは依存関係が生じる時に(この場合ARKitExample が UnityARKit に依存している)、それを解消するために明示的にそれをUnityに教えてあげる機能です。
依存している側の Assembly Definition Files (この場合はARKitExample)の設定で、References というところがあるので、そこの+をポチっと押して、
依存先の Assembly Definition Files (この場合UnityARKit)を割り当ててやるのです。
そうすると、先ほどエラーはなくなる、ということですね。
(ちなみにこのARKitExample の Assembly Definition Files は本来必要ないものなので、消しておきましょう)
そんな感じです。