"[Namespace] .Global"유형을로드 할 수 없습니다.


106

내 .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 프롬프트에서 컴파일하면 정상적으로 컴파일됩니다.


앱의 다른 페이지가 작동합니까? 웹 서버가 1.1을 실행하도록 구성되었지만 앱이 2.0 용으로 컴파일 된 경우 가끔 이런 일이 발생합니다
Noon Silk

예, 'Target Framework'는 2.0
gkdm

답변:


162

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

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

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

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


13
또한 : VS를 닫았다가 다시 열어보십시오. 내장 된 디버깅 서버를 사용하는 경우 다른 웹 사이트를 실행 중일 수 있습니다. 열거 나 닫으면 localhost 포트가 다시 등록됩니다.
BradLaney

1
제 경우에는 프로젝트 출력을 inetpub \ wwwroot \ myproject \ bin에 넣고 싶었지만 iisexpress가 myProject \ bin을 찾도록 구성했습니다. 출력 경로를 변경하는 것만으로 문제가 해결되었습니다.
shindigo

제 경우에는 포함되어야하는 .dll이 있었지만 어떤 이유로 '로컬 복사'로 설정되지 않았습니다. 이로 인해이 답변에 명시된 것과 유사한 컴파일 문제가 발생했습니다.
HockeyJ

고마워, Stantona. 이것이 저에게 효과가 있었고 제 시간에 집에 갈 시간이었습니다.
Bill Norman

3
프로젝트의 출력 경로를 bin 폴더로 변경하면 문제가 해결되었습니다. 내 하루를 구 해주셔서 감사합니다!
Tunahan

18

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


내가 뭘해야한다고 생각하니?
gkdm 2010 년

1
.cs 파일의 네임 스페이스를 확인하고 asax 파일에 선언 된 네임 스페이스와 동일한 지 확인합니다. 내 의심은 그들이 다를 것입니다 ...
PhilPursglove 2010-01-05

그때는 잘 모르겠습니다. 지금 제가 제안 할 수있는 것은 ILDASM을 사용하여 어셈블리의 네임 스페이스 내용을 다시 빌드하고 확인하는 것입니다.
PhilPursglove 2010 년

감사합니다. 이것이 저에게 도움이 된 해결책이었습니다. Resharper를 사용하여 솔루션의 모든 네임 스페이스를 확인합니다.
Leonard

방금 이런 일이 발생했습니다. MVC 5 프로젝트 (중요하지 않음)에서 프로젝트 네임 스페이스를 변경했지만 Global.asax (및 App_Start 폴더)를 변경하는 것을 잊었습니다. 경험에 관계없이 때로는 어리석은 감독이 여전히 당신을 얻습니다.
제이슨 Snelders

15

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

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

public partial class Global : System.Web.HttpApplication

1
내 글로벌 파일이 왜 이것없이 끝났는지 확실하지 않지만 이것이 나에게 문제였습니다. 감사합니다!
ginja

9

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


2
저에게도 똑같이 효과가있었습니다. 열려있는 모든 Visual Studio를 닫아야합니다.
alansiqueira27 2014

5

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

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

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

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


5
  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
        //
    }
}

도움이 되길 바랍니다


3

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

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

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


3

비슷한 오류가 발생했습니다.

<clear/>

의 하위 (첫 번째 하위)로 태그

<assemblies>

Web.config의 태그 . IIS의 '기본 웹 사이트'아래에 배포 된 응용 프로그램에서 구성 상속을 방지하기 위해 web.config에 태그를 삽입했습니다.


이것은 확실히 나를 올바른 방향으로 가리 켰습니다. 결국 빈 자리 표시 자이기 때문에 부모 디렉토리에 <clear />를 넣었습니다. 진짜 문제는 내 응용 프로그램이 참조한 어셈블리를 지워 응용 프로그램 어셈블리가로드되지 않는다는 것입니다.
Doug Lampe 2014

나는 이것도 경험했다-목록을 지우는 대신에 선택된 어셈블리를 명시 적으로 제거하는 것이 잘되었다.
Arve Systad 2014 년

2

제 상황에서는 프로젝트의 웹 사이트 / 웹 응용 프로그램 유형과 관련이 있습니다. 최근에 MVC로 이동하여 웹 애플리케이션으로 변경해야했습니다.

따라서 솔루션은 간단했습니다. 솔루션 탐색기에서 웹 사이트를 선택하고 솔루션에서 제거한 다음 솔루션을 마우스 오른쪽 단추로 클릭하고 추가-> 기존 프로젝트 ( 웹 사이트 아님)를 선택하고 웹 사이트 를 다시 컴파일합니다.


2

이전 게시물이지만 웹 사이트 프로젝트에서 웹 응용 프로그램 프로젝트로 변환하려고 할 때이 오류가 발생합니다.

링크 의 지침을 따르십시오 . 여전히 global.asax 오류가 발생했지만 Visual Studio에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 새 항목 추가를 선택하여 삭제하고 다시 추가하는 것뿐이었습니다. global.asax 파일을 추가하면 작동했습니다.


2

불행히도 이들 중 어느 것도 나를 위해 일하지 않았습니다. 내가 찾은 수정 사항은 개발, 특히 로컬 컴퓨터에서의 디버깅과 관련이 있습니다. 또한 안타깝게도 제가 원하는 방식으로 문제를 해결하지는 못합니다.하지만 만약 당신이 현명한 일이라면, 이것은 당신을 다시 실행할 수 있습니다.

요약 : 프로젝트 속성의 웹 탭에있는 서버에서 로컬 IIS 웹 서버 사용을 선택합니다. 주소,

http://localhost/MyApp" 

이미 채워졌습니다 (IIS7, .NET 4.0이 있습니다). 원래 선택된 것은 가상 경로가 "/"인 "Use Visual Studio Development Server"였습니다.

저에게 정말 당혹스러운 것은 아무것도 효과가 없다는 사실입니다. 저는 SO에서 찾을 수있는 모든 제안을 검토했지만 아무것도 효과가 없었습니다. 이상한 점은 이전 .net 2.0 (내 생각에) 프로젝트에서 추가 된 기존 파일과 유사한 새 ascx 파일을 추가 할 때 오류가 발생했다는 것입니다 (마지막으로 본 지 몇 달이 지났습니다). 애플리케이션 내에서 사용자 지정 사용자 관리가 가능합니다. 이 새 파일을 추가하려고 할 때까지 오랫동안 아름답게 작동했습니다. 그것을 추가하고 오류를 본 후 즉시 모든 변경 사항을 되돌 렸지만 Global.ascx 오류는 사라지지 않고 전체 프로젝트를 날려 버리고 소스 제어에서 최신 정보를 다시 가져 오지 않습니다.


2

내 솔루션을 VS2003에서 VS2010으로 변환했고 웹 응용 프로그램 프로젝트를 변환하는 데 문제가있었습니다.

나는 똑같은 문제를 경험했지만 어떤 답변도 나를 위해 일하지 않았습니다.

나를 위해 일한 것은 다음과 같습니다.

  • 솔루션을 마우스 오른쪽 단추로 클릭하고 구성 관리자를 선택하십시오.
  • '활성 솔루션 구성'드롭 다운 목록에서 각 구성을 확인했습니다.
  • 'Build'체크 박스를 선택하여 빌드에 웹 애플리케이션을 포함했습니다.

변환 중에 발생한 문제로 인해 어떤 이유로 든 빌드에서 웹 응용 프로그램 프로젝트가 제거 된 것 같습니다.

이 답변이 같은 문제가있는 다른 사람에게 도움이되기를 바랍니다.


1

프로젝트를 다시 빌드하거나 변경하고 이전 파일에서 파일을 이동하는 경우 전역의 상속 블록을 확인하십시오. 제 경우에는 이전 프로젝트 / 솔루션의 이름이 인트라넷이고 인트라넷으로 다시 만들었지 만 파일 위로 이동했을 때 소문자 (duh)가 마음에 들지 않았습니다. 파일 이름에 대한 일반적인 조사를 수행하십시오.


1

어셈블리의 GUID를 변경합니다. 이것은 많은 많은 문제를 해결합니다.


GUID를 어떻게 변경합니까?
Drew Chapin

1

프로젝트에서이 오류가 발생하는 유사한 문제가 발생했습니다.

Could not load type [Namespace].Global
Error in Line 1   etc etc

약간의 시간을 보낸 후 Class ..에서 가능한 오류가있는 함수가 의심됩니다.

Visual Studio가 디버깅 시간에 특정 오류를 표시하지 않은 이유를 모르겠습니다. 그러나이 오류는 클래스 파일의 일부 오류로 인해 발생할 수 있습니다 ..


1

이 작업은 나에게 적합합니다. 첫 번째 : Visual Studio에 뭐라고 말 했든간에 ide는 항상 파일을 찾는 것 같습니다. bin (웹 앱용 및 제 경우에는 코스를 벗어난 경우) 그래서, 내가 Visual Studio에 말했을 때도 파일을로드 할 특정 경로, ide는 잘못된 경로를 계속 찾습니다. 따라서 빌드 / 구성 관리자에서 출력 유형을 다음과 같이 변경합니다. 릴리스 (이전에는 솔루션을 수동으로도 정리합니다) 그래서 .dll 파일이 생성되었을 때 프로젝트 / 솔루션 아래의 "bin"폴더로 수동으로 이동했습니다. 폴더. 이것이 도움이되기를 바랍니다 !!


1

제 경우에는 대상 프로세서 (x64) 때문에 x86으로 변경하여 프로젝트를 정리하고 VS (2012)를 다시 시작하고 프로젝트를 다시 빌드했습니다. 그때 사라졌습니다.


1

가장 최근에이 문제가 발생했을 때 여기에 언급 된 모든 것을 시도했지만 아무 소용이 없었습니다. 머리카락을 찢은 후 전체 코드베이스를 삭제하기로 결정한 다음 (예, 절망적입니다!) 내 코드 저장소에서 모든 것을 다시 다운로드했습니다. 이렇게 한 후 모든 것이 다시 한 번 잘 작동했습니다.

극단적 인 해결책처럼 보이지만이 스레드에서 이전에 언급되지 않았기 때문에 여기에 포함시킬 것이라고 생각했습니다.

(다른 시간에이 문제가 발생했을 때 Global.asax가 호스트 컴퓨터에 등록되어야하는 구성 요소에서 상속되었을 때입니다.이 문제가 없어서 동일한 문제가 발생했습니다).

TL; DR; 이 스레드의 모든 답변이 작동하지 않으면 전체 코드베이스를 삭제 한 다음 다시 다운로드하십시오!


1

저는이 문제를 몇 번 겪었으며 각각의 경우 컴퓨터를 재 구축하거나 새 컴퓨터로 전환했습니다. 내 첫 번째 단계 (컴퓨터를 업데이트하고 Visual Studio를 설치하는 것 외에)는 Git에서 내 프로젝트를 가져 와서 테스트하는 것입니다.

컴파일하기 전에 로컬 코드에 액세스하려고했기 때문에 매번이 오류가 발생했습니다. 보시다시피, 내 bin / build 폴더를 무시하도록 Git 및 Subversion 설정이 있으므로 내 저장소에서 가져온 후 Nuget에서 필요한 패키지를 가져 오는 빌드를 실행하는 것을 잊었습니다 (Git / SVN도 무시 함). 실제로 내 앱을 실행하려면 DLL이 필요했습니다.

이것이 대부분의 사람들의 문제를 해결할 수 있을지 의심 스럽지만, 잠재적 인 해결책 목록에서 보지 못해서 추가 할 것이라고 생각했습니다.


1

제 경우에는 WCF 프로젝트에 Global.asax를 추가하여 실험했지만 제거하기로 결정했습니다. 솔루션 탐색기에서 제거했지만 여전히 폴더에 있었기 때문에 파이프 라인이 여전히이를 찾아이 오류를 발생 시켰습니다.

파일 시스템에서 Global.ASAX 및 GLobal.asax.cs를 제거하고 오류가 해결되었습니다.


이것은 저를 위해 해결되었습니다. 감사합니다.하지만 제 경우에는 Global.asax를 프로젝트에 추가하지 않은 다른 사람들을 위해 추가하고 싶습니다. 그러나 여기에서 언급했듯이 global.asax 및 global.asax.cs 파일은 내 파일 시스템에있었습니다. 삭제했을 때 버그가 사라졌습니다.
stackonfire

1

거의 20 년 동안 개발 게임에 종사해 온이 밤은 여러 프로젝트에서 계속해서 나를 괴롭 혔습니다.

따라서 오늘 동일한 문제가 다시 발생하는 동안 다른 프로젝트에 대해 자세히 조사하기로 결정했으며 이것이 Bin 폴더 위치 또는 더 구체적으로 bin 폴더의 출력 경로와 관련이 있다고 생각합니다.

간단한 서비스 기반의 웹 응용 프로그램 실행 / IIS를 통해 디버그 구성을 위해 나를 위해, 그것은의 출력 경로 변경되었다 디버그 \ 빈빈 \ 를 해결

프로젝트> 속성> 빌드> 출력 경로

이것이 도움이되기를 진심으로 바랍니다.


0

나는 똑같은 문제에 당황했다. 나는 제거하려고 노력했고global.asax (추가하기 전에 닫힌 VS2010) . 프로젝트 / 솔루션을 정리하고 웹 애플리케이션 구성의 변경 사항 및 여기 SO 스레드에서 다른 사람들을 위해 일했던 기타 사항을 확인했습니다. 마침내 솔루션을 정리하고 bin / obj 폴더를 삭제하고 실행중인 VS2010 개발 서버를 중지 한 다음 모든 변경 사항을 되돌리고 응용 프로그램이 다시 실행되고 있음을 발견했습니다. 나는 똑같은 것을 redid했고 이제는 잘 작동합니다.

다시 일어 났고 이번에는 솔루션 저에게 효과적 이었습니다.


0

솔루션 속성에서 구성 관리자로 이동합니다. 그런 다음 모든 프로젝트를 확인하고 빌드하면 문제가되지 않습니다.


0

프로젝트에 포함되지 않은 파일을 디스크에서 삭제 (중복)해야했습니다. 이름이 변경되지 않아 중복이 발생한 것 같습니다. 파일 이름은 다르지만 코드는 동일합니다.

oof. * 파일을 모두 삭제 한 후 스캔 할 수있었습니다.

  • foo.aspx
  • foo.aspx.cs
  • foo.aspx.designer.cs
  • oof.aspx
  • oof.aspx.cs
  • oof.aspx.designer.cs

0

제 경우에는 IIS와 동일한 포트를 가리키는 IISExpress였습니다.

C:\Users\Your-User-Name\Documents\IISExpress\config\applicationhost.config

포트를 검색 <site>...</site>하면 제거하거나 주석 처리해야하는 태그를 찾을 수 있습니다.


0

prod 서버에만 배포 할 때이 문제가 발생했습니다. 내 다른 환경에서는 작동합니다 ... 그냥 bin 폴더에서 항목을 삭제 한 다음 다시 게시하고 그 후에 작동합니다.


0

Visual Studio를 사용하는 경우 릴리스 모드에서 응용 프로그램을 실행하려는 경우 디버그 모드로 변경해보십시오.


0

솔루션을 다시 빌드하고 성공하지 못한 채 ASP.NET 임시 파일을 지우려고했습니다.
그러나 IISRESET 을 실행 하면 오류가 사라졌습니다.

업데이트 : 1 개월 후 다시 같은 문제가 발생했습니다. MyWebsite.DLL은 bin 폴더에 있지만 Temporary ASP.NET Files (C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files)에는 존재하지 않습니다. Global.asax 질문 에서 "Parser Error Message : could not load type" (실제로 내 대답을 잊어 버림) 에 제안 된 몇 가지 사항을 시도 했지만 IISRESET 후에 만 오류가 다시 사라졌습니다.


0

제 경우 VS 2017에서는 경량 솔루션로드로 인해이 문제가 발생했습니다. 나는 그것을 비활성화하고 VS를 다시 시작한 다음 내 솔루션을 다시 빌드하면 문제가 사라졌습니다.


2
"가벼운"솔루션이란 무엇입니까?
Fandango68

0

2 센트를 더하고 싶었습니다. 나는 같은 오류를 받고 있었고 모든 제안을 아무 소용이 없었습니다. 내 상황은 아마 다를까요?

자동으로 생성 된 "AssemblyInfo.cs"파일에 약간의 외부 공간이있어서 디버그를 통해 웹 앱을 실행하지 못했습니다. 파일은 다음과 같습니다.

[assembly: AssemblyTitle("WebApplication2")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("

            ")]
[assembly: AssemblyProduct("WebApplication2")]
[assembly: AssemblyCopyright("Copyright © 

             2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

AssemblyCompany와 AssemblyCopyright의 공간을 없애고 마침내 프로젝트를 구축하고 실행할 수있었습니다.

다음 환경에서 관찰 됨 : --Visual Studio 2017 Community 버전 15.3.0 --Win 7 x64 Enterprise-새 프로젝트> Visual C #> 웹> ASP.NET 웹 애플리케이션> Web Forms

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