url: https://qiita.com/toRisouP/items/d206af3029c7d80326ed
title: "Unity Assembly Definition 完全に理解した - Qiita"
description: "はじめに この記事におけるソースコードはすべて Public Domain です。 また本記事において利用しているUnityバージョンは2019.2です。 Assembly Definitionとは何か Assembly Definitionという機能をご存知でしょうか..."
host: qiita.com
favicon: https://cdn.qiita.com/assets/favicons/public/production-c620d3e403342b1022967ba5e3db1aaa.ico
image: https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkYwJTJGNDcxNDYlMkZwcm9maWxlLWltYWdlcyUyRjE2Njg4NDEyNzU_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmJnPUZGRkZGRiZmbT1wbmczMiZzPWM5NThjMmNlNWU2MGQ5YTZkOGRlNDBmNGU5NzAyZjk4%26blend-x%3D120%26blend-y%3D462%26blend-w%3D90%26blend-h%3D90%26blend-mode%3Dnormal%26mark64%3DaHR0cHM6Ly9xaWl0YS1vcmdhbml6YXRpb24taW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1vcmdhbml6YXRpb24taW1hZ2UlMkZiZjQyYTg4OGU5MzY2YWEyZDgxN2JkOTg1ZTIzMWMxMmM2ZDgwODI2JTJGb3JpZ2luYWwuanBnJTNGMTU0NTc5MjU4OT9peGxpYj1yYi00LjAuMCZ3PTQ0Jmg9NDQmZml0PWNyb3AmbWFzaz1jb3JuZXJzJmNvcm5lci1yYWRpdXM9OCZiZz1GRkZGRkYmYm9yZGVyPTIlMkNGRkZGRkYmZm09cG5nMzImcz03YzljNzVlM2ZjNGNmODRiMjMxNGZhNzNlMjM1OTQ1Nw%26mark-x%3D186%26mark-y%3D515%26mark-w%3D40%26mark-h%3D40%26s%3D1a6542c2ceb31661b90e0f8ec6fd62e1?ixlib=rb-4.0.0&w=1200&fm=jpg&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9VW5pdHklMjBBc3NlbWJseSUyMERlZmluaXRpb24lMjAlRTUlQUUlOEMlRTUlODUlQTglRTMlODElQUIlRTclOTAlODYlRTglQTclQTMlRTMlODElOTclRTMlODElOUYmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtcGFkPTAmcz0wZTEzNzM0NDc0NDZiNTg3YWYwZmYzOGNlMzhiNDk1Nw&mark-x=120&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDB0b1Jpc291UCZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPTljMjgxNWEzOThmM2JlZWQzMmRmM2RiODU3NDRmZTRk&blend-x=242&blend-y=454&blend-w=838&blend-h=46&blend-fit=crop&blend-crop=left%2Cbottom&blend-mode=normal&txt64=5qCq5byP5Lya56S-IOODkOODvOODgeODo-ODq-OCreODo-OCueODiA&txt-x=242&txt-y=539&txt-width=838&txt-clip=end%2Cellipsis&txt-color=%233A3C3C&txt-font=Hiragino%20Sans%20W6&txt-size=28&s=cabaccc1936dfa6cf029a86e3f338610
C# DLL
C# ソースコードはコンパイルすると IL (中間言語) に変換されます。 そして dot-NET の仮想マシンが IL を JIT 機能を利用しながらネイティブコード(=機械語)に変換します。
Unity においても同様の仕組みであり、 C# ソースコードが dll に変換されます。 この dll も IL で構成されており、実行時に動的に dll がロードされネイティブコードに変換されることで動作します。
url: https://ufcpp.net/study/il/summary/il_about/
title: "IL の概要"
description: "概要(書きかけ)C# などの、.NET Framework 上で動作するプログラミング言語は、一度、.NET の中間言語(intermediate language)にコンパイルされます。.NET の場合…"
host: ufcpp.net
favicon: https://ufcpp.net/images/icons/favicon-32x32.png
image: https://ufcpp.net/images/logo_4.jpg
Assembly Definition
url: https://qiita.com/toRisouP/items/d206af3029c7d80326ed
title: "Unity Assembly Definition 完全に理解した - Qiita"
description: "はじめに この記事におけるソースコードはすべて Public Domain です。 また本記事において利用しているUnityバージョンは2019.2です。 Assembly Definitionとは何か Assembly Definitionという機能をご存知でしょうか..."
host: qiita.com
favicon: https://cdn.qiita.com/assets/favicons/public/production-c620d3e403342b1022967ba5e3db1aaa.ico
image: https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkYwJTJGNDcxNDYlMkZwcm9maWxlLWltYWdlcyUyRjE2Njg4NDEyNzU_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmJnPUZGRkZGRiZmbT1wbmczMiZzPWM5NThjMmNlNWU2MGQ5YTZkOGRlNDBmNGU5NzAyZjk4%26blend-x%3D120%26blend-y%3D462%26blend-w%3D90%26blend-h%3D90%26blend-mode%3Dnormal%26mark64%3DaHR0cHM6Ly9xaWl0YS1vcmdhbml6YXRpb24taW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1vcmdhbml6YXRpb24taW1hZ2UlMkZiZjQyYTg4OGU5MzY2YWEyZDgxN2JkOTg1ZTIzMWMxMmM2ZDgwODI2JTJGb3JpZ2luYWwuanBnJTNGMTU0NTc5MjU4OT9peGxpYj1yYi00LjAuMCZ3PTQ0Jmg9NDQmZml0PWNyb3AmbWFzaz1jb3JuZXJzJmNvcm5lci1yYWRpdXM9OCZiZz1GRkZGRkYmYm9yZGVyPTIlMkNGRkZGRkYmZm09cG5nMzImcz03YzljNzVlM2ZjNGNmODRiMjMxNGZhNzNlMjM1OTQ1Nw%26mark-x%3D186%26mark-y%3D515%26mark-w%3D40%26mark-h%3D40%26s%3D1a6542c2ceb31661b90e0f8ec6fd62e1?ixlib=rb-4.0.0&w=1200&fm=jpg&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9VW5pdHklMjBBc3NlbWJseSUyMERlZmluaXRpb24lMjAlRTUlQUUlOEMlRTUlODUlQTglRTMlODElQUIlRTclOTAlODYlRTglQTclQTMlRTMlODElOTclRTMlODElOUYmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtcGFkPTAmcz0wZTEzNzM0NDc0NDZiNTg3YWYwZmYzOGNlMzhiNDk1Nw&mark-x=120&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDB0b1Jpc291UCZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPTljMjgxNWEzOThmM2JlZWQzMmRmM2RiODU3NDRmZTRk&blend-x=242&blend-y=454&blend-w=838&blend-h=46&blend-fit=crop&blend-crop=left%2Cbottom&blend-mode=normal&txt64=5qCq5byP5Lya56S-IOODkOODvOODgeODo-ODq-OCreODo-OCueODiA&txt-x=242&txt-y=539&txt-width=838&txt-clip=end%2Cellipsis&txt-color=%233A3C3C&txt-font=Hiragino%20Sans%20W6&txt-size=28&s=cabaccc1936dfa6cf029a86e3f338610
url: https://docs.unity3d.com/ja/2022.3/Manual/ScriptCompilationAssemblyDefinitionFiles.html
title: "アセンブリの定義 - Unity マニュアル"
description: "Assembly Definition (アセンブリ定義) と Assembly Reference (アセンブリ参照) は、スクリプトをアセンブリにまとめるために作成するアセットです。"
host: docs.unity3d.com
favicon: ../StaticFiles/images/favicons/favicon.png
image: https://docs.unity3d.com/ja/2022.3/uploads/Main/ScriptCompilation.png
AssemblyDefinition という機能を有効にすると、でかい dll を複数のサブ dll アセンブリモジュールに分割できます。 これによって以下のメリットがあります。
- C# ソースコードを変更したときに、そのソースコードに関係する dll のみコンパイルすればよい
- ソースコードの依存関係を整理できる
- 他プロジェクトにおける再利用性が高まる
.asmdef ファイルを設定したフォルダ以下が 1 つのアセンブリ dll として扱われます。