2010-07-23 2 views
2

간단한 C# 프로젝트의 폴더에있는 파일에 대해 질문하고 싶습니다. 속성 폴더의 디버그 폴더에 bin 폴더에 (.PDB 파일, .vshost 파일, 별도로 .manifest 파일) (.csproj.fileListAbsolute.txt 파일의 .pdb 파일) (를 AssemblyInfo.cs) 같은간단한 C# 프로젝트에서 각 파일의 기능은 무엇입니까?

무엇 그들 각 파일의 기능은 무엇입니까?

그리고 이들 중 MSIL에있는 파일이없는 경우이 언어로 된 파일은 어떻게 얻을 수 있습니까?

다른 질문 : C# 코드를 MSIL로 변환하는 특정 부분은 무엇입니까 ?? , 그것은 C# 컴파일러인가? 그것에 특정한 이름이 있습니까?

답변

9

기술적으로 pdb, vshost 및 매니페스트 파일 은 C# 프로젝트의 일부가 아니며 프로젝트를 빌드 할 때 생성되는 출력의 일부입니다.

PDB 파일에는 어셈블리 내의 코드를 원본 파일과 연관시키기 위해 디버거에서 사용하는 기호 정보가 들어 있습니다. 이렇게하면 디버거에서 어셈블리의 MSIL에있는 명령 집합에 해당하는 소스 코드 줄을 식별 할 수 있습니다.

vshost.exe 파일은 Visual Studio에서 생성하는 응용 프로그램의 디버깅을 가속화하는 호스팅 프로세스입니다. 디버거의 시작 시간을 줄이기 위해 프로세스에 app 도메인을 캐시합니다.

매니페스트 파일에는 프로젝트의 어셈블리에 대한 정보와 그에 대한 일반적인 메타 데이터가 들어 있습니다. 그 내용은 프로젝트 유형에 따라 다릅니다.

csproj 파일은 프로젝트의 코드 및 리소스를 XML 기반으로 표현한 것입니다. 이 파일은 Visual Studio에서 어셈블리로 컴파일 할 코드와 코드를 찾는 데 사용됩니다. 이 파일에는 프로젝트 설정 및 컴파일러 (및 기타 도구)가 프로젝트의 자산을 처리하는 방법을 제어하는 ​​옵션도 포함되어 있습니다.

이 파일들 중 MSIL이 들어 있지 않습니다. MSIL은 프로젝트를 빌드 할 때 생성되는 .exe 및 .dll 파일의 일부입니다. 이러한 파일은 Microsoft PE (portable executable) format을 사용하여 인코딩되며 리소스, 데이터 및 MSIL 코드가 들어 있습니다.

exe ​​및 dll 및 pdb 파일은 C# 컴파일러 - csc.exe에 의해 생성됩니다. 다른 파일 (IIRC)은 전체 빌드주기를 제어하는 ​​msbuild 프로세스에 의해 호출되는 다른 도구에 의해 생성됩니다.

+0

덕분에 많이, 당신의 대답은 정확히 내가 무엇을 필요 :) 대답 –

2

실행 파일 (exe) 또는 어셈블리 (dll)에는 MSIL에 코드가 포함됩니다. MSIL은 ILDASM 또는 .NET Reflector와 같은 도구를 사용하여 볼 수 있습니다. C# 컴파일러는 csc.exe입니다.

+0

hummm ..나는 exe (일반)에 네이티브 코드가 포함되어 있다는 것을 알았다. 닷넷은 다르다. JIT 컴파일러는 실행될 때 네이티브 코드로 exe 파일을 컴파일한다. –

1

여기에 빠른 목록입니다 :

  • PDB - 다음은 Visual Studio 및 다른 디버거에 의해 사용되는 디버깅 심볼이다.
  • VSHOST - 이것은 인텔리 및 디버깅 도움을 제공하는 데 사용됩니다 비주얼 스튜디오에 의해 호스팅 특별한 실행 파일 (따라서 이름) 내가이 생각 이다 (예를 들어,중단 점).
  • MANIFEST - 작업중인 프로젝트의 종류에 따라 다릅니다. 일반적으로이 파일을 사용하면 응용 프로그램에 대한 특별한 OS 수준의 요구 사항을 지정할 수 있습니다 (예 : UAC 관리자 권한 ... 보안 모델 등)
  • CSPROJ - 응용 프로그램의 Makefile/Buildfrile로 생각하십시오. (CSPROJ는 CSharp 프로젝트를 의미 함) -이 파일에는 응용 프로그램을 빌드하는 데 필요한 모든 파일과 필요한 추가 처리 단계 (예 : Makefile 대상)가 나열되어 있습니다.
  • AssemblyInfo.cs - 이것은 단지 일반적인 C# 코드 파일이지만 일반적으로 어셈블리 수준 특성을 추가하기 위해 예약되어 있습니다. (.NET 어셈블리 메타 데이터, 운영 체제에서 사용되는 일반 EXE 파일의 메타 데이터와 반대)

MSIL은 C# 소스 코드를 컴파일의 결과 코드의 중간 표현 마이크로 소프트 중간 언어입니다 (또는 기타 .NET 언어)에서 C# 컴파일러 (csc.exe)를 사용합니다.

.NET 런타임은 응용 프로그램을 실행할 때 IL을 실제 컴퓨터 코드로 해석하거나 JIT 컴파일합니다.

+0

감사합니다 :) –

관련 문제