[ASP.NET] 파일순환참조는 허용되지 않습니다.

2015. 3. 13. 14:57WEB/ASP.NET WebForm

ASP.NET Web Form 개발 중 ‘circular file references are not allowed’라는 오류가 발생하는 경우, 원인과 해법은 다음과 같습니다.

image

원인

ASP.NET Web Form은 폴더 별로 DLL 하나씩 생성합니다. 따라서 다음과 같이 구성할 때 DLL간 순환참조가 발생하게 됩니다.

/Folder1/Contorl1.ascx –> Folder2/ControlA.ascx 참조

/Folder2/Control2.ascx –> Folder1/ControlB.ascx 참조

위와 같이 구성하게 되면 Folder1 dll은 Folder2 dll을 참조하게 되고, Folder2 dll은 Folder1 dll을 참조하게 되어 파일순환참조가 발생하게 됩니다.

해결방법

  1. 폴더 구성을 재구성합니다. 복잡한 참조관계를 가지지 않도록 단순화하는 것이 필요합니다. 필요이상의 UserControl로 세분화하지 않습니다.
  2. 아래와 같이 web.config에서 batch=”false”로 설정합니다. 그러면 각 Control, Page 별로 DLL이 생성되게 되어 문제가 해결될 수 있습니다. 반면에 성능은 다소 떨어지게 되므로 가급적 권장되지 않습니다. 개발 시에만 false로 설정하고, 호스팅 시 true로 설정하는 등으로 사용하는 방법이 있습니다.