0 투표
c# 으로 웹사이트 구성중인데, app_code 에 클래스를 상위의 Global.asax 에서 참조를 못해서 빌드가 안되네요.

이상하네요. App_Code 클래스는 어디서나 참조되어 사용가능한데, 특정 클래스만 안되는 이유가 무엇일까요?

1 답변

0 투표

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 클래스만 참조되지 않는 경우에는

  • 네임스페이스 선언 및 using 여부

  • 클래스 접근 제한자(public 여부)

  • 파일 위치와 확장자

  • 프로젝트 유형(웹 사이트 vs 웹 애플리케이션)
    을 순서대로 확인하는 것이 가장 빠른 해결 방법입니다.

구로역 맛집 시흥동 맛집
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
...