[asp.net] ASP.Net 오류 : “”temp1.dll “및”temp2.dll “모두에 ‘foo’유형이 ​​있습니다.

웹 응용 프로그램 프로젝트를 실행할 때 임의의 시간에 페이지가 CS0433 오류로 실패 할 수 있습니다. 유형이 여러 DLL에 있습니다. DLL은 모두 “Temporary ASP.NET Files”디렉토리에있는 생성 된 DLL입니다.



답변

web.config 파일의 “compilation”요소에 batch = “false”특성을 추가합니다.

이 문제는 ASP.NET 2.0이 응용 프로그램 참조와 응용 프로그램의 폴더 구조를 사용하여 응용 프로그램을 컴파일하는 방식 때문에 발생합니다. 응용 프로그램의 web.config 파일에있는 요소의 배치 속성이 true로 설정된 경우 ASP.NET 2.0은 응용 프로그램의 각 폴더를 별도의 어셈블리로 컴파일합니다.

http://www.sellsbrothers.com/1995

http://support.microsoft.com/kb/919284


답변

이는 App_Code에 .cs 파일을 배치하고 웹 애플리케이션 프로젝트에서 컴파일하도록 빌드 조치를 변경 한 경우에 발생할 수 있습니다.

App_Code의 .cs 파일에 대한 빌드 작업이 Content로 있거나 App_Code의 이름을 다른 것으로 변경합니다. intellisense가 콘텐츠로 표시된 .cs 파일을 수정하지 않기 때문에 이름을 변경했습니다.

http://vishaljoshi.blogspot.se/2009/07/appcode-folder-doesnt-work-with-web.html 에서 자세한 정보


답변

이 오류의 한 가지 가능한 이유 inherits=<@page language=......inherits=>줄 에 동일한 이름을 가진 2 개의 aspx 페이지가 있기 때문 입니다.

inherits=이름을 변경하면 오류가 해결됩니다.


답변

다른 사람이 내 문제를 공유하는 경우 새로 분기 된 프로젝트의 웹 사이트를 게시하려고 할 때이 오류가 발생했습니다. 빌드가 완벽하게 작동했습니다.

게시 설정-> 사전 컴파일 구성 아래에서 “미리 컴파일 된 사이트를 업데이트 할 수 있도록 허용” 확인란을 제거하는 것을 잊었습니다 .


답변

또 다른 데이터 포인트 로서 Ben의 답변의 링크에 설명 된 순환 참조의 증거 없이 방금이 문제가 발생했습니다 . 내 웹 사이트 프로젝트를 빌드하면 이러한 오류 중 일부가 실패하고 설정이 compilation batch="false"수정되었지만 대규모 프로덕션 웹 사이트이므로 해당 경로를 가고 싶지 않았습니다.

이 솔루션은 S :에 매핑 된 D : \ svn 폴더의 하위 폴더에있었습니다. S :에서 솔루션을 열었을 때 이러한 오류가 발생했지만 D : \ svn으로 바로 이동하여 솔루션을 열면 오류가 발생하지 않습니다.

또한 compilation batch="true"web.config에 있음에도 불구하고 매핑 된 S : 드라이브에서 솔루션을 열 때 모든 .ascx 파일이 자체 어셈블리로 컴파일됩니다. 물리적 위치에서 열면 .ascx 파일이 해당 폴더의 어셈블리로 컴파일됩니다 ( batch="true"작동 방식).

이상한.


답변

이 오류는 웹 양식의 클래스 이름과 동일한 클래스 이름을 가진 wsdl stub (파일 .cs 뒤에있는 코드) 간의 충돌로 인해 발생했습니다.

ASPX 페이지 : 대시 보드 클래스 : partiacl 클래스 대시 보드

AppCode / APIServices.cs : 공용 부분 클래스 대시 보드

오류는 웹 사이트를 게시 할 때만 재현 할 수 있었지만 빌드 및 디버그는 오류를 알리지 않았습니다.


답변

제 경우에는 프로젝트 이름을 변경 했으므로 dll도 이름이 변경되었습니다. 방금 새 dll을 복사했지만 서버에서 이전 dll을 삭제할 생각이 없었을 때, 곧 동일한 이름을 가진 여러 쌍의 클래스가 생겼습니다. 오래된 dll을 삭제하는 것이 (원인의) 트릭을 수행했습니다.