C# 및 .NET 개발 환경에서 사용되는 파일 구성과 파일 형식
MySolution/
├── MySolution.sln
├── MyProject/
│ ├── MyProject.csproj
│ ├── bin/
│ │ ├── Debug/
│ │ │ └── MyProject.exe
│ │ └── Release/
│ │ └── MyProject.exe
│ ├── obj/
│ │ ├── Debug/
│ │ │ └── TemporaryGeneratedFile.cs
│ │ └── Release/
│ │ └── TemporaryGeneratedFile.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Resources/
│ │ └── Logo.png
│ ├── App.config
│ ├── Program.cs
│ ├── login.cs
│ ├── login.desginer.cs
│ ├── login.resx
│ ├── MainWindow.xaml (WPF 프로젝트의 경우)
│ └── MainWindow.xaml.cs (WPF 프로젝트의 경우)
└── AnotherProject/
├── AnotherProject.csproj
├── ...
1. 솔루션 루트 폴더
- 설명: 솔루션 루트 폴더는 솔루션 파일(.sln)이 위치하는 최상위 폴더다. 이 폴더 안에는 여러 개의 프로젝트 폴더가 포함될 수 있다. 각 프로젝트는 별도의 폴더에 위치하며, 하나의 솔루션은 여러 프로젝트를 포함할 수 있다.
- 예시: MySolution.sln
2. 프로젝트 폴더
- 설명: 프로젝트 폴더는 개별 C# 프로젝트가 위치하는 폴더다. 솔루션에 포함된 모든 프로젝트는 각각의 폴더를 가지며, 이 폴더 안에 프로젝트와 관련된 파일과 서브 폴더가 위치한다.
- 예시: MyProject/
프로젝트 폴더의 일반적인 구조:
- bin/ 폴더:
- 설명: 빌드 결과물이 저장되는 폴더다. bin 폴더 안에는 프로젝트를 빌드했을 때 생성된 실행 파일(.exe), 동적 링크 라이브러리(.dll), 그리고 디버깅 정보(.pdb) 등이 저장된다.
- 서브 폴더:
- Debug/: 디버그 빌드 결과물
- Release/: 릴리즈 빌드 결과물
- 예시: MyProject/bin/Debug/MyProject.exe, MyProject/bin/Release/MyProject.dll
- obj/ 폴더:
- 설명: 컴파일러가 중간 결과물을 저장하는 폴더다. 이 폴더는 주로 빌드 과정에서 생성된 임시 파일들을 포함하며, 최종 빌드 전의 중간 단계 파일들이 위치한다.
- 서브 폴더:
- Debug/: 디버그 빌드 중간 결과물
- Release/: 릴리즈 빌드 중간 결과물
- 예시: MyProject/obj/Debug/MyProject.csprojAssemblyReference.cache
- Properties/ 폴더:
- 설명: 프로젝트의 설정 파일들을 포함하는 폴더다. 이 폴더 안에는 주로 AssemblyInfo.cs 파일이 있으며, 이 파일은 어셈블리의 버전, 저작권 정보 등 메타데이터를 정의한다.
- 예시: MyProject/Properties/AssemblyInfo.cs
- Resources/ 폴더:
- 설명: 프로젝트에서 사용하는 리소스 파일을 관리하는 폴더다. 예를 들어, 이미지, 아이콘, 텍스트 파일 등이 여기에 저장될 수 있다. 이 폴더는 주로 리소스 디자이너에서 관리되는 .resx 파일을 포함할 수 있다.
- 예시: MyProject/Resources/Logo.png
- References/ 폴더 (실제로는 Visual Studio 내에서 가상 폴더로 표시):
- 설명: 프로젝트에서 참조하는 어셈블리들을 관리하는 곳이다. 이 참조들은 다른 프로젝트, NuGet 패키지, .NET Framework의 라이브러리 등이 될 수 있다.
- 예시: System.Data.dll, Newtonsoft.Json.dll
- App.config 또는 Web.config 파일:
- 설명: 애플리케이션의 구성 파일이다. 콘솔 및 데스크탑 애플리케이션에서는 App.config, 웹 애플리케이션에서는 Web.config로 이름이 지정된다. 이 파일은 애플리케이션의 설정 정보를 XML 형식으로 저장하며, 데이터베이스 연결 문자열, API 키, 설정 값 등을 저장한다.
- 예시: MyProject/App.config, MyProject/Web.config
- MainWindow.xaml (WPF 프로젝트의 경우):
- 설명: WPF 프로젝트의 메인 윈도우를 정의하는 XAML 파일이다. (XML 기반 마크업 언어 파일) 이 파일은 사용자 인터페이스를 정의하는데 사용되며 UI 요소와 레이아웃을 구성할 수 있다. 이 파일과 함께 코드 비하인드 파일(MainWindow.xaml.cs)도 생성된다.
- 예시: MyProject/MainWindow.xaml, MyProject/MainWindow.xaml.cs
- .xaml.cs :
- XAML 파일과 함께 사용되며, XAML에서 정의된 UI 요소의 이벤트 처리기 및 다른 로직을 포함한다. XAML과 코드비하인드 파일이 함께 사용되어 UI와 로직을 분리한다.
- .xaml.cs :
- .cs 파일들:
- 설명: 프로젝트의 소스 코드 파일들이다. 이 파일들에는 클래스, 메서드, 인터페이스, 이벤트 핸들러 등 프로그램의 로직이 구현된다.
- 예시: MyProject/Program.cs, MyProject/MyClass.cs
- .desinger.cs (디자이너 파일) :
- 주로 Windows Forms 또는 WPF(Windows Presentation Foundation) 프로젝트에서 사용된다. 폼 디자이너에서 생성한 자동화된 코드가 이 파일에 저장된다. 사용자 인터페이스(UI)의 구성 요소와 해당 속성을 정의하며, 수동으로 수정하지 않는 것이 일반적이다.
- packages.config 또는 *.csproj 파일 내 NuGet 패키지 참조:
- 설명: NuGet 패키지 관리와 관련된 파일이다. packages.config는 예전 방식으로 NuGet 패키지를 관리하는 파일이며, 새로운 .NET Core/5+ 프로젝트에서는 패키지 참조가 .csproj 파일 내에서 관리된다.
- 예시: MyProject/packages.config, MyProject/MyProject.csproj의 NuGet 패키지 참조 섹션
- <프로젝트 이름>.csproj 파일:
- 설명: 프로젝트 파일로, XML 형식으로 저장되며 프로젝트의 모든 구성 정보를 포함한다. 이 파일에는 빌드 설정, 참조된 어셈블리, 프로젝트에 포함된 파일 목록 등이 정의된다.
- 예시: MyProject/MyProject.csproj
- .resx (리소스 파일):
- 리소스 파일로, 문자열, 이미지, 아이콘 등과 같은 프로그램에서 사용하는 리소스를 저장한다. 다국어 지원을 위해 여러 언어 버전의 리소스 파일이 존재할 수 있다.
- 예시: Form1.resx, Strings.en.resx
- .xsd (XML 스키마 정의 파일):
- 설명: XML 문서의 구조와 데이터 유형을 정의하는 파일이다. XML 문서의 유효성을 검사하는 데 사용된다. 주로 데이터베이스 관련 프로젝트에서 데이터셋을 정의할 때 사용된다.
- 예시: DataSet1.xsd
- .pdb (프로그램 데이터베이스 파일):
- 설명: 디버깅 정보를 포함하는 파일이다. 컴파일된 어셈블리와 함께 생성되며, 디버거가 소스 코드와 바이너리 파일을 연결하는 데 사용된다.
- 예시: MyApp.pdb
- <솔루션 이름>.sln 파일:
- 설명: 솔루션 파일로, 하나 이상의 프로젝트를 포함하는 솔루션의 구성 정보를 저장한다. 이 파일은 솔루션에 포함된 모든 프로젝트와 그들 간의 관계를 정의한다.
- 예시: MySolution.sln
반응형
'Programming > C#' 카테고리의 다른 글
DLL 추가 / 열기 및 수정 / 추출 (0) | 2024.09.01 |
---|---|
C# - npgsql & IIS 포트 (0) | 2024.08.30 |
C# - GPDB 커넥션 에러 (0) | 2024.08.26 |
C# 에서 서버 간 JSON 데이터 주고받기 (0) | 2024.08.19 |
DLL 개념 (0) | 2024.08.19 |