.NET 개발에서는 bin 디렉터리에서
.pdb, .xsd, .vshost.exe, .exe, .exe.config, .vshost .exe와 같은 유형의 파일을 자주 볼 수 있습니다. config
프로젝트가 출시되면 어떤 것이 필요하고 어떤 것이 필요하지 않은지 불분명한 경우가 많습니다. 그렇다면 이러한 형식의 파일은 정확히 어떤 용도로 사용됩니까?
pdb
.pdb 파일은 VS에서 디버깅을 위해 생성한 심볼 파일입니다(프로그램 데이터베이스), 디버깅 정보를 저장합니다. VS의 프로젝트 속성, C/C++, 디버그 정보 형식에서 /Zi를 설정하면 VS는 프로젝트 빌드 시 PDB 파일을 생성합니다.
여기서 두 가지 상황을 구별해야 합니다.
1. 정적 라이브러리를 구축할 때 프로젝트 속성 -> 이름 생성된 pdb 파일의 이름을 설정합니다. 지정하지 않으면 기본적으로 VCx0.pdb로 생성됩니다. 여기서 x는 VS 버전 번호입니다. 예를 들어 VS2005를 사용하는 경우 VC80.pdb가 생성됩니다. 여기서 탄생할 거야 질문이 있습니다. 정적 라이브러리를 컴파일할 때 기본적으로 생성되는 .pdb 파일의 이름이 모두 동일합니다. 이 정적 라이브러리를 참조하는 프로젝트가 최종적으로 올바른 .pdb 파일을 찾을 수 있습니까? 대답은 '예'입니다. VS가 생성된 파일에 이를 포함하기 때문입니다. .pdb 파일의 경로입니다.
예를 들어 Project/ToolA 아래에는 정적 라이브러리 ToolA.lib가 빌드되며 이에 따라 Project에서도 vc80.pdb가 생성됩니다. /ToolB 아래에는 vc80.pdb가 생성되는 정적 라이브러리 ToolB.lib가 빌드됩니다. 그런 다음 최종 프로젝트 Work.exe는 이 두 정적 라이브러리를 동시에 연결합니다. Work.pdb가 되면 해당 기호 파일 경로인 Project/ToolA/vc80.pdb 및 ToolB.lib가 ToolA.lib에 있습니다. 해당 기호 파일 경로인 Project/ToolB/vc80.pdb를 병합하여 최종 프로젝트의 Work.pdb를 생성합니다.
2. 실행 파일 또는 동적 라이브러리를 빌드합니다. 이 경우 컴파일러는 .pdb 파일을 생성하고 링커는 .pdb 파일을 생성합니다. 프로젝트 속성 –> C/C++ -> 출력 파일 -> 프로그램 데이터베이스 이름 설정, 링커에서 생성된 .pdb 파일은 프로젝트 속성에서 설정할 수 있습니다. -> 디버깅 -> 디버깅 정보를 생성하고(예로 설정) 프로그램 데이터베이스 이름 설정을 생성합니다.
이 두 pdb 파일의 차이점은 무엇인가요? 컴파일러에서 생성된 pdb 파일의 이름도 기본적으로 vcx0으로 지정됩니다. 컴파일 프로세스 중에 컴파일러는 각 .obj 파일에 해당하는 기호 정보를 저장하지만 함수 정의는 포함하지 않습니다. 링커에서 생성된 .pdb 파일은 기본적으로 프로젝트 이름으로 이름이 지정됩니다. 이 파일은 프로젝트를 연결할 때 컴파일러에서 생성된 vcx0.pdb를 기반으로 링커에서 추가로 처리됩니다. 기호 파일에 대한 완전한 정보가 제공됩니다. 링커가 각 .obj 파일을 기반으로 exe 또는 dll을 생성하는 것처럼, 컴파일러에서 생성된 .pdb 파일은 컴파일 링크 프로세스의 중간 제품이며 최종적으로 다음 용도로 사용됩니다. 디버거는 링커에 의해 생성된 ProjectName.pdb입니다.
위에서는 pdb 파일 생성 규칙을 설명합니다. 이를 사용하면 디버깅 중에 파일에 해당하는 pdb 파일 경로를 얻은 다음 해당 경로(절대 경로)로 이동하여 exe 또는 dll을 찾습니다. 제가 직접 컴파일했기 때문에 어디에 배치해도 pdb 파일이 움직이지 않는 한 디버거에서 찾을 수 있습니다. 디버거가 해당 경로에서 이를 찾을 수 없으면 exe 또는 dll과 동일한 수준 디렉터리에서 검색합니다. 예를 들어 이 직업은 이 프로그램은 다른 사람이 컴파일하여 기호 파일과 함께 전송되었습니다. 기호 파일을 exe 또는 dll과 동일한 디렉터리에 넣으면 디버거에서도 이를 찾을 수 있습니다. 물론 디버거에서 기호를 직접 지정할 수도 있습니다. 파일 경로
XSD
XSD는 XML 스키마 정의(XML Schemas Definition)를 나타냅니다.
XML Schema는 DTD를 대체합니다. XML 스키마 언어도 XSD입니다.
XML 스키마는 XML 문서의 구조를 설명합니다. 지정된 XML을 사용할 수 있습니다. XML 문서가 요구 사항을 충족하는지 확인하기 위해 XML 문서의 유효성을 검사하는 스키마입니다. 문서 디자이너는 XML을 사용할 수 있습니다 스키마는 XML 문서가 허용하는 구조와 내용을 지정하며 XML 문서가 유효한지 확인하는 데 사용할 수 있습니다. XML 스키마 자체는 XML 구문 구조를 따르는 XML 문서입니다. 일반적인 XML 파서로 구문 분석할 수 있습니다.
XML 스키마는 문서에 나타나는 요소, 문서에 나타나는 속성, 하위 요소, 하위 요소 수, 하위 요소 순서, 요소가 비어 있는지 여부, 요소 및 속성의 데이터 유형을 정의합니다. 그리고 요소나 속성의 기본값과 고정값.
XSD가 DTD를 대체하는 이유는 다음과 같습니다. 첫째, 향후 상황에 따라 확장 가능합니다. 둘째, DTD보다 더 풍부하고 유용합니다. 셋째, XML로 작성됩니다. 다섯째, 네임스페이스를 지원합니다.
XSD 파일의 접미사는 .xsd입니다.
XML 스키마의 장점:
1) XML 스키마는 XML을 기반으로 하며 특별한 구문이 없습니다
2) XML은 다른 XML 파일처럼 구문 분석되고 처리될 수 있습니다
3) XML Schema는 일련의 데이터 유형(int, float, Boolean, date 등)을 지원합니다.
4) XML Schema는 확장 가능한 데이터 모델을 제공합니다.
5) XML 스키마는 포괄적인 네임스페이스를 지원합니다.
6) XML 스키마는 속성 그룹을 지원합니다.
.vshost.exe 및 .exe
.vshost.exe는 이름에서 알 수 있듯이 vs가 실행되고 디버깅할 때 실제로 열리는 파일입니다. 이 프로그램을 사용하면 vs가 디버깅 정보를 추적할 수 있습니다. 호스트 프로세스는 디버깅 성능을 향상시키고 부분 신뢰 디버깅을 지원하며 디자인 타임 식 평가를 지원하는 Visual Studio 2005/2008/2010/201x의 기능입니다.
호스트 프로세스 파일의 파일 이름에는 다음이 포함됩니다. vshost이며 프로젝트의 출력 폴더에 있습니다. exe는 직접 열 수 있으며 vs는 이 파일의 실행 상태를 추적하지 않습니다. 참조된 어셈블리가 완료되면 직접 실행할 수 있습니다.
.exe.config와 .vshost.exe.config의 차이점
.exe.config은 비디버깅 상태의 구성 파일입니다.
vshost.exe.config는 디버깅 중에 생성되어 디버깅에 사용되는 임시 파일입니다.
폴더에 있는 vshost.exe.config 파일의 내용은 .exe.config와 완전히 동일합니다. 주로 호스트 프로세스 디버깅에 사용되며 애플리케이션을 통해 직접 실행하거나 배포해서는 안 됩니다.
위 내용은 이 글의 전체 내용입니다. 이 글의 내용이 모든 분들의 공부나 업무에 조금이나마 도움이 되었으면 좋겠습니다.