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.