App_Code에있는 클래스에 액세스 할 수 없습니다


197

ASP.NET에서 웹 사이트를 만들고 클래스를 만들어 App_Code 폴더 안에 넣었습니다. 그러나 다른 페이지에서 액세스 할 수 없습니다. 이것을 허용하도록 무언가를 구성해야합니까? 이전 프로젝트에서는 작동했지만이 프로젝트에서는 작동하지 않았습니다.

namespace CLIck10.App_Code
{
    public static class Glob
    {
        ...
    }
}

1
웹 페이지에 네임 스페이스를 포함한다고 가정합니까?
— Alex Czarto

답변:


637

폴더 에서 .cs파일을 마우스 오른쪽 버튼으로 클릭 App_Code하고 속성을 확인하십시오.

"빌드 조치"가 "컴파일"로 설정되어 있는지 확인하십시오.


10
이것을 기본 빌드 조치로 어떻게 설정할 수 있습니까? 또는 App_Code 폴더의 모든 파일에 대해 그렇게해야합니까?
— Malachi

3
Visual Studio 2012에서 왜 이렇게 할 수 없습니까 ??!
— RSK

4
이것은 VS2012의 버그 인 것 같습니다. 나에게도 일어난다.
— 제임스 네일

2
보다 자세한 정보를 원하는 사람들을 위해 : how-to-code-net.blogspot.ro/2014/04/…
— Alexa Adrian

3
이 솔루션을 공유하기 위해 너무 많은이 내 비주얼 스튜디오 프로젝트에서 142 오류를 해결 감사 야호 : -]
— 마이클 G. 노동자

14

클래스에 액세스하려는 다른 파일의 맨 위에 이것을 넣으십시오.

using CLIck10.App_Code;

또는 다음과 같은 다른 파일에서 클래스에 액세스하십시오.

CLIck10.App_Code.Glob

그것이 당신의 문제인지 아닌지 확실하지 않지만 C #을 처음 사용했다면 이것은 쉽게 넘어 질 수 있습니다.

업데이트 : 최근에 App_Code 폴더를 프로젝트에 추가하면이 "특별한"폴더를 제대로 인식하기 위해 Visual Studio를 닫거나 다시 열어야한다는 것을 알았습니다.


1
그것은 FailBoy의 대답으로 문제를 해결했습니다. 어쨌든 답장을 보내 주셔서 감사합니다 :)
— Malachi

App_Code 폴더의 클래스에 네임 스페이스를 추가 할 때 좋은 점이 있습니다.
— mashtheweb

왜 우리는 그런 네임 스페이스를 포함시켜야합니까? intelliSense가 폴더 이름을 지정하지 않고 해당 클래스에 액세스 할 수없는 이유는 무엇입니까?
— Elham Kohestani

10

App_code 클래스에 액세스하려는 페이지로 이동 한 후 app_code 클래스의 네임 스페이스를 추가하십시오. using다음과 같이 설명 을 제공해야 합니다.

using WebApplication3.App_Code;

그런 다음 app_code 클래스 속성으로 이동하여 'Build Action'을 'Compile'로 설정해야합니다.


4

페이지와 동일한 네임 스페이스를 사용하고 있는지 확인하십시오


1
하지만 왜 APP_CODE에 있을까요? PUBLIC 클래스가 있으면 솔루션 전체에 자동으로 노출되어야한다고 생각했습니다!?
— Fandango68

4

왜 이런 일이 발생했는지 아직 알지 못했지만 App_Code서로 폴더에서 메서드를 호출하는 클래스가 있었으며 .NET 4.5.2 프로젝트를 만들 때이 작업을 수행하는 데 좋았습니다. 대상 서버가 업그레이드되지 않았으므로 4.0으로 되 돌리십시오. 그때 나는이 문제를 발견했을 때 ( langversion내 web.config에서 6에서 5로 수정 한 후 ... 다른 이야기) ....

내 방법 중 하나에 다음과 같은 오류가 계속 발생했습니다.

The type X.Y conflicts with the imported type X.Y in MyProject.DLL

여기에 허용 된 답변에서 제안한대로 내 클래스는 모두 속성에서 "컴파일"로 설정되어 using MyNamespace;있으며 각 클래스 는 동일한 공통 네임 스페이스를 가지며 각 클래스의 최상위에 있습니다.

서로의 메서드를 호출해야하는 문제가있는 클래스를 "App_Code"이외의 다른 표준 폴더로 옮기면 충돌 문제가 발생하지 않습니다.

참고 : "AppCode"라는 표준 폴더를 작성하고 클래스를 해당 폴더로 이동하고 "App_Code"폴더를 삭제 한 다음 "AppCode"의 이름을 "App_Code"로 바꾸면 문제가 다시 발생합니다. "App_Code"를 만들기 위해 "새 폴더"또는 "ASP .NET 폴더 추가"옵션을 사용하더라도 문제가되지 않습니다. 이름을 입력하는 것 같습니다.

어쩌면 이것은 .NET 4.0 (그리고 이전의) 문제 일 것입니다 ... 4.5.2에서는 되돌릴 필요가 없었습니다!


0

파일을 별도의 클래스 라이브러리 프로젝트로 옮긴 다음 웹 프로젝트에서 해당 프로젝트를 참조 using하고 파일 섹션에 네임 스페이스를 적용하는 것이 더 쉽다는 것을 알았습니다 . 어떤 이유로 다른 솔루션이 나를 위해 작동하지 않았지만이 해결 방법이 도움이되었습니다.


0

필자의 경우 App_Code 폴더에 정의 된 클래스로 빌드 할 프로젝트를 얻을 수 없었습니다.

의견을 제시하기 위해 시나리오를 정확하게 복제 할 수는 없지만 협력을 위해 인텔리전스를 위해서는 Visual Studio를 닫았다가 다시 열어야했습니다 ...

App_Code 폴더의 클래스가 'Content'대신 'Compile'로 설정되면 (오른쪽 클릭) 오류가 클래스의 두 번째 버전에서 발생했다는 것을 알았습니다. 코드 창과 탭 사이의 3 개 필드 중 3 개 '다른'것은 10_App_Code 또는 이와 유사한 줄을 따라 무언가라고 불렀습니다.

문제를 해결하기 위해 폴더 이름을 App_Code에서 Code로 바꾸고 클래스의 네임 스페이스를 명시 적으로 설정하고 모든 클래스를 'Compile'로 설정했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.