답변:
web.config 파일의 "compilation"요소에 batch = "false"특성을 추가합니다.
이 문제는 ASP.NET 2.0이 응용 프로그램 참조와 응용 프로그램의 폴더 구조를 사용하여 응용 프로그램을 컴파일하는 방식 때문에 발생합니다. 응용 프로그램의 web.config 파일에있는 요소의 배치 속성이 true로 설정된 경우 ASP.NET 2.0은 응용 프로그램의 각 폴더를 별도의 어셈블리로 컴파일합니다.
이는 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"
작동 방식).
이상한.
이 답변 중 어느 것도 나를 위해 일하지 않았지만 문제를 해결했습니다. VS의 Publish 기능을 사용하여 웹 애플리케이션을 배포했기 때문에 게시 하기 전에 기존 파일을 모두 삭제 하는 옵션을 선택했습니다. 게시 마법사에서 게시 . 이로 인해 응용 프로그램의 깨끗한 복사본이 만들어졌고 모든 것이 잘 작동했습니다.
이 솔루션은 로컬 디버깅 복사본이 제대로 작동하지만 게시 된 시스템이 작동하지 않는 경우 유용 할 수 있습니다. 개별 dll을 추적하는 데 시간을 할애하지 않고 먼저 삭제되는 프로덕션 파일을 신경 쓰지 않는 경우에도 좋습니다.
제 경우에는 여전히 중복 된 클래스 이름이있는 Designer.cs 파일을 편집 할 때 문제가 해결되었습니다. 어떤 이유로 "logout"클래스의 이름을 "logout2"로 변경했을 때 디자이너 파일에서 자동으로 변경되지 않았고 여전히 "logout"이었으며이 클래스 이름은 이미 내 프로젝트의 미리 컴파일 된 dll에 존재했습니다. 함께 작업하고 개발하는 타사 웹 앱).
aspx 페이지의 일부를 별도의 사용자 정의 컨트롤에 넣을 때이 문제가 발생했습니다. 내 컴퓨터에서는 모든 것이 정상이며 서버에서 오류가 발생했습니다.
문제 클래스 및 파일의 이름을 변경했습니다.
http://support.microsoft.com/kb/919284 방법 2 : 응용 프로그램의 폴더 재정렬이 가능한 순환 참조에 대해 작성 중입니다.
이 솔루션 중 어느 것도 나를 위해 일하지 않았습니다. 충돌하는 두 DLL은 모두 C : \ ... \ AppData \ ... \ Temporary ASP.NET Files \ ...
문제는 동일한 솔루션 내에서 한 프로젝트에서 다른 프로젝트로 유형을 이동하기 전에 소스 저장소를 이전 버전으로 롤백했다는 것입니다.
msbuild에서 식별 한 "임시 ASP.NET 파일"위치에서 이전 코드베이스에 전혀 없었던 최신 DLL을 삭제하려고했습니다. msbuild는 다시 넣습니다.
또한 여기 일부가 성공적으로 사용한 web.config 설정을 시도했지만 작동하지 않았습니다. 이 글을 쓰는 동안 실제로 동일한 솔루션 내에 두 개의 MVC 프로젝트가 있고 둘 다 오류가 있음을 알게 되었기 때문에 문제는 둘 다에 설정을 추가하지 않았을 수 있습니다.
내 소스 저장소를 앞으로 롤링하고 청소하고 다시 롤백하고 청소하려고 시도했습니다. 아무것도.
"임시 ASP.NET 파일"위치를 모두 삭제하려고했습니다. msbuild는 다시 넣습니다.
마지막으로 Visual Studio에서 재 구축을 시도했습니다. 명령 줄 출력과 "오류"출력 모두 동일한 msbuild "Temporary ASP.NET Files"오류를 나타내지 만 충돌 된 유형 위로 마우스를 가져 가면 Intellisense 오류가 실제로 출력 디렉터리의 DLL에 대해 불평했습니다. 분명히 "Clean"과 "Rebuild"는 그들의 일을하지 않았습니다. Intellisense가 식별 한 출력 디렉토리에서 DLL을 수동으로 삭제했고 문제가 해결되었습니다.
tl; dr-배치 설정으로 모든 web.config를 다루고 있는지 확인하고 추가 단서를 위해 Intellisense를 활용하십시오.
내 문제는 내 프로젝트 폴더에서 생성되는 .dll에 연결되었습니다.
위에서 본 모든 작업을 수행하는 대신 다른 파일을 참조하는 경우 내 문제를 즉시 해결 한 것은 내 프로젝트의 / bin 디렉토리에 남아 있던 .dll을 삭제하는 것입니다.
문제는 반드시 web.config 수정이 아니라 해결해야하는 순환 참조입니다. 원래 프로젝트 파일에서 이전 .dll을 지 웠지만 참조하는 프로젝트에서는 지우지 않았다는 것을 깨달았습니다.
web.config 파일을 수정하지 않는 것이 좋습니다. 이는 반창고 수정일 뿐이며 실제 문제를 실제로 해결하는 것이 아니기 때문입니다. 문제를 해결하고 싶지 않다면 그렇게하세요.하지만 앞으로의 두통을 피하려면 두 곳에서 .dll을 제거하세요.
때로는 솔루션을 제거하고 다시 만드는 것이 도움이 될 수 있습니다. VS2005에서 vs2010으로 변환 할 때 이러한 사용이 발생하기 때문에 프레임 워크 4.0에 대한 일부 참조 (업그레이드 후)가 솔루션에 남아 있기 때문에 모든 프로젝트도 3.5로 정의됩니다.
일반적으로 솔루션을 다시 빌드하면 이러한 문제가 해결됩니다.
컴파일 서버에서 응용 프로그램을 컴파일 할 때 동일한 문제가 발생했습니다.
내 컨트롤러에는 간단한 정적 코드가 있으므로 ascx를 변경했습니다.
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="controllerName.ascx.cs" Inherits="Controls.controllerName" %>
에
<%@ Control Language="C#" AutoEventWireup="true" Src="controllerName.ascx.cs" Inherits="Controls.controllerName" %>
또한 코드 숨김에서 partial 키워드를 제거하고 코드 숨김에 네임 스페이스를 추가했습니다.
이:
using System;
using System.Web.UI;
/// <summary>
/// My controller
/// </summary>
public partial class controllerName: UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
이에:
using System;
using System.Web.UI;
namespace Controles
{
/// <summary>
/// My controller
/// </summary>
public class controllerName : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
그리고 그것은 나를 위해 일했습니다.
나에게 이것은 PrecompiledWeb / Publish 위치를 사이트의 루트 폴더가있는 현재 디렉토리로 설정했을 때 발생했습니다.
내 웹 사이트는 컴파일 / 빌드 할 때 게시 폴더를 프로젝트의 일부로보고 그런 방식으로 중복을 찾았습니다.
즉, 사이트의 코드 폴더에 사이트의 게시 / 미리 컴파일 된 버전을 넣지 마십시오.
내 솔루션 게시 :
이 문제는 Mcafee Antivirus의 "온 액세스 검색"과 관련이 있습니다. 이것을 비활성화하면 문제가 해결되었습니다. 어떻게 든 바이러스 백신이 켜져있을 때 ASP에서 ASP Temporary 폴더가 제대로 사용되지 않았습니다.
이것이 누군가를 돕기를 바랍니다.
App_Code 폴더가 문제의 원인입니다. 클래스를 폴더 외부에 두십시오 (잘 작동합니다)
App_Code 폴더는 웹 응용 프로그램 프로젝트 용으로 설계되지 않았습니다.
http://vishaljoshi.blogspot.in/2009/07/appcode-folder-doesnt-work-with-web.html