다음 중 asp.net에서 지원하는 폴더는 무엇입니까?
1. Bin 폴더
Bin 폴더에는 애플리케이션에서 참조해야 하는 컨트롤, 구성 요소 또는 기타 코드에 필요한 배포 가능한 어셈블리가 포함되어 있습니다. 이 디렉터리에 있는 모든 .dll 파일은 자동으로 응용 프로그램에 연결됩니다. 이 폴더에 사용되지 않거나 만료된 파일이 있는 경우 "모호한 참조" 예외가 발생할 위험이 있을 수 있습니다. 즉, 서로 다른 두 어셈블리가 동일한 클래스(동일한 네임스페이스 및 이름)를 정의하는 경우 ASP.NET 런타임은 사용해야 할 어셈블리를 결정할 수 없으므로 예외가 발생합니다. 개발하는 동안 프로젝트 이름이나 어셈블리 이름을 바꿀 때 흔히 발생하는 실수입니다. 이 오류를 방지하려면 이 폴더에 불필요한 어셈블리를 유지하지 않도록 하거나 최소한 구성 파일의
lt;add Assembly =" *" /gt;
2. App_Browser 폴더
이 선택적 폴더에는 .browser 파일이 포함되어 있습니다. .browser 파일은 브라우저(모바일 장치 브라우저이든 데스크탑 브라우저이든)의 특징과 기능을 설명합니다. ASP.NET은 설치 경로 아래의 Config/Browser 폴더에 많은 수의 .browser 파일을 설치하며, 이러한 파일은 모든 응용 프로그램에서 공유됩니다. App_Browser 폴더에 현재 애플리케이션과 관련된 브라우저 파일을 넣기만 하면 됩니다. .browser 파일의 내용은 ASP.NET 런타임에 최신 브라우저 정보를 제공하기 위해 즉시 동적으로 컴파일됩니다.
맞춤형 .browser 파일이 도움이 될 수 있는 시나리오에 대해 간략하게 이야기해 보겠습니다. 응용 프로그램이 특정 브라우저에서 효과적으로 렌더링되지 않는 컨트롤을 사용한다고 상상해 보십시오. .browser 파일을 작성하여 ASP.NET이 지정된 브라우저에 호스트 페이지를 표시할 때 다른 어댑터를 사용하여 컨트롤을 생성하도록 할 수 있습니다.
lt; 브라우저gt;
lt; ="Samples.CustomControl"
adapterType="Samples.Adapters.CustomControlAdapter" /gt;
lt;/controlAdaptersgt;
lt;/browsergt;
lt;/browsersgt;
browserID가 ASP.NET에서 인식하는 표준 브라우저 중 하나와 일치한다고 가정하면 위에 표시된 .browser 파일은 지정된 브라우저에서 CustomControlAdapter를 사용하여 렌더링함을 나타냅니다. CustomControl.
3. App_Code 폴더
App_Code 폴더는 웹 애플리케이션의 루트 디렉터리 바로 아래에 있으며 애플리케이션의 일부로 동적으로 컴파일되어야 하는 모든 클래스 파일을 저장합니다. 이러한 클래스 파일은 종속성을 생성하기 위해 페이지에 명시적인 지침이나 선언을 추가할 필요 없이 자동으로 애플리케이션에 연결됩니다. App_Code 폴더에 있는 클래스 파일에는 사용자 지정 컨트롤, 도우미 클래스, 빌드 공급자, 비즈니스 클래스, 사용자 지정 공급자, HTTP 처리기 등 인식된 ASP.NET 구성 요소가 포함될 수 있습니다.
참고 개발하는 동안 App_Code 폴더를 변경하면 전체 애플리케이션이 다시 컴파일됩니다. 대규모 프로젝트의 경우 이는 바람직하지 않으며 시간이 많이 걸릴 수 있습니다.
이러한 이유로 모든 사람은 코드를 다양한 클래스 라이브러리로 모듈화하고 논리적으로 관련된 클래스 컬렉션으로 구성하는 것이 좋습니다. 애플리케이션별 보조 클래스는 대부분 App_Code 폴더에 배치되어야 합니다.
App_Code 폴더에 저장된 모든 클래스 파일은 동일한 언어를 사용해야 합니다. 클래스 파일이 두 개 이상의 언어로 작성된 경우 각 언어로 작성된 클래스를 포함하는 언어별 하위 디렉터리를 만들어야 합니다. 이러한 클래스 파일이 언어별로 구성되면 web.config 파일의 각 하위 디렉터리에 대한 설정을 추가합니다.
lt;compilationgt;
lt;codeSubDirectoriesgt;
lt;adddirectoryName="VBFolder" /gt;
lt;/codeSubDirectoriesgt;
lt;/compilationgt;
중요하게는 특정 언어의 하위 디렉토리는 web.config 파일에 등록해야 합니다. 그렇지 않으면 App_Code 폴더 아래의 모든 파일이 속한 폴더에 관계없이 단일 어셈블리로 컴파일됩니다. 위 구성 스크립트에서는 모든 C# 파일이 App_Code 폴더의 루트 디렉터리에 배치되고 여러 Visual Basic .NET 클래스 파일이 VBFolder 디렉터리로 이동되는 상황을 설명합니다. codeSubDirectories 섹션에 언급된 디렉터리가 존재하지 않으면 컴파일 오류가 발생합니다.
App_Code 루트 폴더의 파일은 App_Code_xxx.dll 어셈블리로 컴파일됩니다. 여기서 xxx는 무작위로 생성된 문자 시퀀스입니다. 지정된 하위 디렉터리의 파일은 App_SubCode_xxx_yyy.dll이라는 동적으로 생성된 어셈블리로 컴파일됩니다. 여기서 xxx는 하위 디렉터리의 이름을 나타내고 yyy는 임의의 문자 시퀀스입니다.
App_Code 디렉터리나 다른 하위 디렉터리에 Assemblyinfo.cs 파일을 배치하여 강력한 이름의 어셈블리를 만들 수 있습니다. 분명히 폴더에 Visual Basic .NET 파일이 포함되어 있으면 Assemblyinfo.vb 파일이 사용됩니다. 어셈블리 구성 파일은 .snk 파일을 참조하여 강력한 이름의 키를 보유할 수 있습니다.
참고 어셈블리에 대한 강력한 이름을 설정하려면 먼저 공개/개인 키 쌍을 얻어야 합니다. 이러한 키 쌍은 강력한 이름 도구(sn.exe)를 사용하여 얻을 수 있습니다. 강력한 이름 도구는 .NET Framework의 설치 경로에서 찾을 수 있는 SDK 바이너리 중 하나입니다. 키 쌍 파일의 확장자는 일반적으로 .snk입니다. 이 파일을 애플리케이션 폴더에 저장하고 다음과 같이 Assemblyinfo.cs 파일에서 참조할 수 있습니다.
[어셈블리: AssemblyKeyFileAttribute(@"yourKeyPair.snk")]
참고 Visual Basic .NET은 Visual Studio 솔루션이 포함된 디렉터리에서 키 파일을 찾는 반면, C# 컴파일러는 바이너리가 포함된 디렉터리에서 키 파일을 찾습니다. 이에 따라 이 속성을 사용하여 사용하는 경로를 조정하거나 키 파일을 적절한 폴더에 배치할 수 있습니다.
이후 재구축 시 어셈블리 이름이 변경됩니다. 동시에 이전 AppDomain 요청이 완료되자마자 이전 어셈블리가 삭제됩니다.
App_Code 폴더에는 클래스 파일만 들어 있는 것이 아닙니다. 특히 데이터 스키마를 나타내는 XSD 파일을 포함하고 자동으로 처리할 수 있습니다. XSD 파일을 이 폴더에 추가하면 컴파일러는 이를 형식화된 DataSet 클래스로 구문 분석하고 애플리케이션 범위에 추가합니다. ASP.NET 1.x에서는 Visual Studio .NET 마법사에서 명령줄 유틸리티(xsd.exe)를 사용하여 이 작업을 수행했습니다.
참고 web.config 파일을 사용하여 구성 요소(예: 사용자 지정 서버 컨트롤 또는 사용자 지정 HTTP 처리기)를 등록하는 경우 일반적으로 코드가 포함된 어셈블리의 이름을 지정해야 합니다. . 구성 요소가 App_Code 폴더에 정의된 경우 어셈블리를 나타내는 데 어떤 이름을 사용해야 합니까? 이 경우 어셈블리 정보를 무시하고 전체 클래스 이름을 지정하면 됩니다. 어셈블리가 지정되지 않은 경우 ASP.NET 런타임은 App_Code 폴더에 대해 동적으로 생성된 어셈블리를 포함하여 로드된 어셈블리에서 클래스를 로드하려고 시도합니다.
4. App_Data 폴더
App_Data 폴더에는 애플리케이션의 로컬 데이터 저장소가 포함되어야 합니다. 일반적으로 Microsoft Access 또는 Microsoft SQL Server Express 데이터베이스, XML 파일, 텍스트 파일 및 응용 프로그램에서 지원하는 기타 파일과 같은 파일 형식의 데이터 저장소가 포함됩니다. 폴더 내용은 ASP.NET에서 처리되지 않습니다. 이 폴더는 ASP.NET 공급자가 자체 데이터를 저장하는 기본 위치입니다.
참고 기본 ASP.NET 계정에는 폴더에 대한 전체 액세스 권한이 부여됩니다. ASP.NET 계정을 변경하는 경우 새 계정에 이 폴더에 대한 읽기/쓰기 액세스 권한이 부여되었는지 확인하십시오.
5. App_GlobalResources 폴더
다른 응용 프로그램과 마찬가지로 ASP.NET 응용 프로그램도 리소스를 사용할 수 있으며 일반적으로 리소스를 사용해야 합니다. 리소스는 애플리케이션 사용자 인터페이스의 지역화 가능한 부분을 분리하는 효과적인 방법입니다. 일반적으로 리소스는 프로그램과 관련된 실행 불가능한 텍스트입니다. 일반적인 리소스는 이미지, 아이콘, 텍스트 및 관련 파일이지만 직렬화 가능한 모든 개체도 리소스로 간주될 수 있습니다. 애플리케이션 리소스는 애플리케이션 외부에 저장되므로 애플리케이션 자체에 영향을 주거나 다시 컴파일하지 않고도 다시 컴파일하고 교체할 수 있습니다.
ASP.NET 응용 프로그램에는 응용 프로그램의 기본 리소스 또는 중립 리소스를 보관할 기본 어셈블리가 있어야 합니다. 또한, 우리가 지원해야 하는 문화에 대한 현지화된 리소스를 포함하는 다수의 위성 어셈블리가 배포됩니다. ASP.NET 1.x에서는 어셈블리 내에서 리소스를 컴파일하는 것이 약간 번거로웠습니다. XML 기반 리소스 파일(확장자가 .res인 파일)은 .resources 바이너리로 수동으로 컴파일해야 합니다. 이러한 파일은 .NET 실행 파일에 포함되거나 위성 어셈블리로 컴파일될 수 있습니다. 리소스 파일 생성기 유틸리티 resgen.exe를 사용하여 텍스트 및 XML 기반 리소스 파일을 .resource 파일로 변환합니다. 리소스 파일 이름은 baseName.cultureName.resource 명명 규칙을 따릅니다. 여기서 baseName은 일반적으로 애플리케이션의 이름입니다.
resgen.exe ProAspNet20.resx ProAspNet20.it.resources
.resource 파일 나중에 어셈블리에 포함되어야 하며 리소스 컨테이너로도 사용되어야 합니다. 위성 어셈블리에 리소스 파일을 포함하려면 어셈블리 커넥터 도구(al.exe)를 사용합니다. 명령줄에서 문화권(아래 예와 같이 이탈리아를 나타냄)과 어셈블리 이름을 나타냅니다.
al /out:ProAspNet20.resources.dll /c:it /embed:ProAspNet20.it.resources
위성 어셈블리가 컴파일된 후에는 동일한 이름을 갖게 됩니다. 문화별로 이름이 지정된 다양한 하위 디렉터리에 배포합니다.
다행히도 ASP.NET 2.0으로 인해 위성 어셈블리의 시대는 영원히 사라졌습니다. 더 정확하게 말하면 위성 어셈블리는 여전히 존재하지만 App_GlobalResources 보존 폴더 이후로 개발자에게는 과거의 일이 되었습니다.
이 폴더에 있는 모든 .resx 파일은 자동으로 위성 어셈블리로 컴파일됩니다. .resx 파일 이름에는 ASP.NET 런타임 환경에 대한 어셈블리 생성에 도움이 되는 문화 정보가 포함되어 있습니다. 다음 파일 resources.resx, resources.it.resx, resources.fr.resx는 이탈리아 및 프랑스 문화권에 적합한 중립 어셈블리 및 위성 어셈블리를 생성합니다. 특정 문화권이 필요하지 않은 경우 중립 어셈블리가 기본 문화권 리소스입니다.