### **Pre IL Code Generation (Deprecated)** 이 기능은 VContainer 1.13.0 이전 버전에서 리플렉션(Reflection) 기반의 메타 프로그래밍을 컴파일 타임에 IL(Intermediate Language) 코드를 생성하는 방식으로 대체하여 런타임 성능을 향상시키는 방법이었습니다. - **주요 특징 (과거):** - **컴파일 타임 IL 코드 생성:** 런타임에 필요한 의존성 주입 로직을 C# 코드 대신 직접 IL 코드로 생성하여 DLL 파일에 삽입했습니다. - **성능 향상:** 런타임 리플렉션 오버헤드를 제거하여 객체 해결(Resolve) 및 주입 속도를 3~6배 가량 빠르게 했습니다. - **IL2CPP 환경 지원:** Unity의 IL2CPP 빌드 환경에서도 잘 작동했습니다. - **활성화 방법 (과거):** 1. **`VContainer.EnableCodeGen.asmdef` 참조 추가:** 프로젝트 내에 `VContainer` 또는 `VContainer.EnableCodeGen`을 참조하는 `asmdef` 파일이 있었다면, 해당 어셈블리들이 IL weaving의 대상이 되었습니다. 2. **어셈블리 빌드:** 지정된 어셈블리가 컴파일될 때 VContainer는 컴파일된 DLL 파일에 변경 사항을 적용했습니다. - 성공적으로 적용되면 `VContainer code generation optimization for MyGame.dll 24 types (40.0355ms)`와 같은 로그가 출력되었습니다. ### **현행화 및 권고 사항** 문서 상단에 명시된 대로, 이 "Pre IL Code Generation" 기능은 **더 이상 사용되지 않습니다 (Deprecated).** **권고 사항:** 대신 VContainer 1.13.0부터 도입된 **Source Generator**를 사용할 것을 강력히 권장합니다. - **Source Generator로의 전환 이유:** - Source Generator는 Roslyn 컴파일러의 공식적인 기능으로, 더 현대적이고 안정적인 방식입니다. - 생성된 코드가 순수 C#이기 때문에 디버깅 및 유지보수가 IL weaving보다 용이합니다. - Unity 2020.2 이후 버전에서 ILPostProcessor의 로깅 문제가 발생하는 등, IL weaving 방식의 한계가 있었습니다. ### 요약 VContainer가 과거에 제공했던 "Pre IL Code Generation"이라는 최적화 기능에 대한 상세 설명입니다. 이 기능은 런타임 리플렉션을 컴파일 타임 IL 코드 생성으로 대체하여 성능을 높였지만, 현재는 더 이상 사용되지 않으며, 개발자들은 대신 더욱 발전된 방식인 Source Generator를 사용할 것을 권장하고 있습니다. 이 문서는 VContainer의 기술 변화 과정을 이해하는 데 도움이 됩니다. --- 이전 : [[8.3 Parallel Container Build]] | 다음 : [[9.1 Comparing to Zenject]]