[c#] “[Namespace] .Global”유형을로드 할 수 없습니다.

내 .Net 2.0 Asp.net WebForms 앱에 다음 코드가 포함 된 Global.asax가 있습니다.

<%@ Application CodeBehind="Global.asax.cs" Inherits="MyNamespace.Global" Language="C#" %>

그러나 빌드 할 때 다음과 같은 오류가 발생합니다.

‘MyNamespace.Global’유형을로드 할 수 없습니다.

이는 MyNamespace 네임 스페이스 (Global.asax.cs 파일 뒤에있는 코드에 정의 됨)가 Global.asax 파일의 컴파일러에 표시되지 않기 때문인 것 같습니다 (R # intellisence ..에는 표시되지 않음). 이것은 깨지기 매우 어려운 너트로 판명되었습니다 … 어떤 도움을 주시면 감사하겠습니다!

참고 : Global.asax와 Global.asax.cs는 같은 폴더에 있습니다.

참고 2 : csc로 vs 프롬프트에서 컴파일하면 정상적으로 컴파일됩니다.



답변

이 문제를 일으킨 한 가지 상황은 “빌드 구성”을 통해 빌드 용 플랫폼을 지정할 때입니다.

x86을 빌드 플랫폼으로 지정하면 Visual Studio는 자동으로 bin / x86 / Debug를이 프로젝트의 출력 디렉터리로 할당합니다. 이는 ASP.NET에서 어셈블리가 Bin 폴더로 출력 될 것으로 예상하는 웹 응용 프로그램을 제외하고 다른 프로젝트 유형에 대해 완벽하게 유효합니다.

내 상황에서 찾은 것은 dll의 일부와 설명 할 수 없을 정도로 가장 중요한 것은 웹 애플리케이션 dll 인 것을 제외하고 (Bin 및 Bin / x86 / Debug) 둘 다로 출력된다는 것입니다. 폴더.

이로 인해 컴파일 문제가 발생하여 “글로벌 유형을로드 할 수 없음”예외가 발생했습니다. 솔루션을 정리하고 어셈블리를 삭제해도 후속 빌드에는 아무런 차이가 없습니다. 내 솔루션은 웹 앱의 프로젝트 설정에서 출력 경로를 bin (bin / x86 / Debug가 아닌)으로 변경하는 것입니다.


답변

프로젝트의 네임 스페이스를 변경 했습니까? 프로젝트 속성 대화 상자에서 네임 스페이스를 변경했지만 Visual Studio가 namespace기존 코드 파일 의 선언을 변경하지 않은 경우 가끔 이런 일이 발생하는 것을 보았습니다 .


답변

나는 asp .net 개발을 처음 접했고 비슷한 문제에 직면했습니다.

나는 수업을 수업으로 업데이트했고 partial잘 작동했습니다.

public partial class Global : System.Web.HttpApplication


답변

Visual Studio를 다시 시작했는데 오류가 사라졌습니다!


답변

여기 또 다른 책이 있습니다. 동일한 포트 번호에서 둘 이상의 웹 응용 프로그램을 시작할 때 이런 일이 발생하는 것으로 보입니다.

기본적으로 작업 할 분기가 두 개 있고 기본 분기와 스테이징 분기 및 릴리스 분기가 있습니다. 분기를 스테이징 분기로 전환했을 때 동일한 포트 주소 구성을 사용하고 있다는 것을 알았으므로 변경하기로 결정했습니다. 그런 다음이 예약이 구성된 다른 애플리케이션과 충돌한다는 또 다른 경고를 받았습니다. IIS Express 서버는 그것에 대해 민감하며 어떤 이유로 든 구성을 브릭합니다.

영향을받지 않는 세 번째 포트를 선택하기 만하면이 문제는 사라졌습니다. 그 다음 포트를 새 디렉터리 매핑에 매핑하기 때문입니다 (내 분기는 디스크에서 다르게 위치 함). 내가 가리키는 유형 이름을 변경하려고 시도했기 때문에 이것을 발견했습니다.Global.asax 서버를 다시 시작한 후에도 유형 이름이 변경되지 한 코드는 IIS Express 배포에 반영되지 않았습니다.

따라서 너무 많은 수면을 취하기 전에 현재 웹 프로젝트를 실행하는 데 사용되는 IIS 포트 번호를 변경해보십시오.


답변

  1. 프로젝트 솔루션을 마우스 오른쪽 단추로 클릭하고 배치 빌드를 선택하십시오.
  2. 그런 다음 프로젝트 이름을 선택하고 정리 및 다시 빌드하십시오.

Works Fine For Me IN VS 2015. 이제 글로벌 이벤트를 사용할 수 있습니다. 내 Global.asax파일에이 줄이 있습니다.

<%@ Application Language="C#" CodeBehind="~/App_Code/Global.asax.cs" Inherits="Global" %>

그리고 다음과 같은 폴더에 있는 클래스 파일 Global.asax.cs을 만듭니다.AppCode

public partial class Global : HttpApplication
{
    public Global()
    {
        //
        // TODO: Add constructor logic here
        //
    }
}

도움이 되길 바랍니다


답변

Global.asax.cs의 빌드 작업을 확인합니다. 컴파일로 설정해야합니다.

솔루션 탐색기에서 Global.asax.cs를 마우스 오른쪽 단추로 클릭하고 속성으로 이동합니다. 속성 창에서 빌드 작업을 설정합니다 ( 디버깅 하지 않는 동안 ).

VS 2008은 기본적으로 항상 .asax (.cs) 파일을 올바르게 추가하지 않는 것 같습니다.