ASP.NET 웹 사이트 프로젝트에서 App_Code 폴더는 자동 컴파일 대상이지만, 참조가 안 되는 경우에는 몇 가지 대표적인 원인이 있습니다.
가장 흔한 원인은 네임스페이스 문제입니다. App_Code 안의 클래스가 특정 네임스페이스로 선언되어 있는데, Global.asax에서 해당 네임스페이스를 using 하지 않으면 참조되지 않습니다. 이 경우 Global.asax 상단에 올바른 using 문을 추가하거나, 전체 네임스페이스를 포함한 클래스명을 사용해야 합니다.
또 다른 원인은 클래스 접근 제한자입니다. App_Code에 있는 클래스가 internal 이거나 접근 제한자가 없는 경우, 다른 위치(Global.asax 포함)에서 접근이 불가능할 수 있습니다. 이 경우 클래스 선언을 public으로 변경해야 합니다.
파일 확장자 문제도 확인해야 합니다. App_Code 폴더 안의 클래스는 반드시 .cs 파일이어야 하며, 다른 확장자이거나 잘못된 위치에 있으면 자동 컴파일 대상에서 제외될 수 있습니다.
또한 웹 사이트 프로젝트와 웹 애플리케이션 프로젝트의 차이도 영향을 줍니다. 웹 애플리케이션 프로젝트에서는 App_Code가 자동 컴파일되지 않기 때문에, 이 경우에는 클래스를 별도의 Class Library로 분리하거나 프로젝트에 명시적으로 포함시켜야 합니다.
정리하면, 특정 App_Code 클래스만 참조되지 않는 경우에는