Understand Files & Folder Structure
Visual studio의 Solution
Visual Studio에서 솔루션(Solution)은 프로젝트들을 관리하고 구성하는 상위 개념이자 아키텍처(architecture)
- 파일 확장자:
.sln확장자 - 구성 요소: 하나 이상의 프로젝트를 포함할 수 있으며, 각 프로젝트는 고유의 설정, 파일 및 리소스를 가짐
- 역할: 프로젝트 간의 종속성을 관리하고, 빌드 및 디버깅 과정을 통합하며, 여러 프로젝트를 단일 단위로 관리

Visual studio의 Porject File
- 파일 확장자: 주로
.csproj(C# 프로젝트) 또는.vcxproj(C++ 프로젝트) 확장자를 가짐. - 구성 요소: 소스 코드 파일, 리소스 파일, 참조, 빌드 설정 등을 포함.
- 역할: 각 프로젝트의 파일과 설정을 관리하고, 빌드 및 디버깅을 위한 정보를 제공함.


<Project Sdk="Microsoft.NET.Sdk.Web">
<!-- 프로젝트 파일의 최상위 요소로, Microsoft.NET.Sdk.Web SDK를 사용하여 웹 애플리케이션 프로젝트를 생성 -->
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<!-- 해당 프로젝트의 타겟 .NET 프레임워크 버전을 지정 -->
<Nullable>enable</Nullable>
<!-- Nullable 참조 유형을 사용하도록 설정 -->
<ImplicitUsings>enable</ImplicitUsings>
<!-- 암시적 using 지시문을 활성화하여, 흔히 사용되는 네임스페이스를 자동으로 포함 -->
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
<!-- Swashbuckle.AspNetCore 패키지를 참조하여 OpenAPI(Swagger) 지원 추가 -->
<!-- Swashbuckle.AspNetCore 패키지는 ASP.NET Core 애플리케이션에 Swagger/OpenAPI 문서 생성을 위한 기능을 제공합니다. -->
<!-- Swagger는 RESTful API를 위한 인터페이스 명세서이며, 이를 통해 API를 시각화하고 테스트할 수 있는 웹 UI를 제공할 수 있습니다.-->
</ItemGroup>
</Project>
launchSettings.json
launchSettings.json 파일은 .NET 프로젝트에서 디버깅 설정을 관리하는 데 사용
이 파일은 프로젝트의 Properties 폴더 안에 위치해 있으며, 애플리케이션이 디버깅 모드로 실행될 때의 설정을 정의합니다.
주요 섹션
- profiles:
각기 다른 디버깅 프로파일을 정의
예를 들어,IIS Express와 같은 웹 서버나, 프로젝트 자체의 실행 구성을 정의할 수 있습니다. - environmentVariables:
환경 변수를 설정합니다.
애플리케이션이 실행될 때 사용할 특정 환경 변수 값을 정의할 수 있습니다. - commandName:
애플리케이션이 실행될 때 사용할 명령을 지정합니다.
예를 들어,Project는 기본 프로젝트 실행을 의미하고,IISExpress는 IIS Express에서 실행을 의미합니다. - applicationUrl:
애플리케이션이 실행될 때 사용할 URL을 지정합니다.
아래와 같이 값을 수정하여 디버깅 프로필에 적용할 수 있으며 웹브라우저 변경도 가능 (설치된 브라우저)


{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:8465",
"sslPort": 44390
}
},
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5118",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:7256;http://localhost:5118",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"launchSettings_Test": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:7256;http://localhost:5118",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Controllers Folder
Controllers Folder는 ASP.NET Core MVC (모델-뷰-컨트롤러) 애플리케이션에서 매우 중요한 역할을 합니다.
이 폴더에는 주로 컨트롤러 클래스들이 위치합니다. 컨트롤러는 사용자의 요청을 처리하고, 필요한 데이터를 모델에서 가져와 뷰에 전달하는 역할을 합니다.

appsettings.json
appsettings.json 파일은 .NET Core 및 ASP.NET Core 애플리케이션에서 설정(configuration) 정보를 저장하는 데 사용되는 파일
이 파일은 JSON 형식으로 작성되며, 애플리케이션이 실행될 때 필요한 각종 설정 값을 포함
주요 역할
- 구성 설정: 데이터베이스 연결 문자열, API 키, 애플리케이션 설정 등을 포함한 각종 설정 정보 등… 을 저장
- 환경별 설정:
appsettings.Development.json,appsettings.Production.json등과 같은 환경별 설정 파일을 통해 개발, 테스트, 프로덕션 등 각 환경에 맞는 설정 값을 관리 - 구성 공급자(Configuration Provider):
appsettings.json파일을 통해 설정 값을 로드하고, 필요에 따라 다른 구성 공급자와 결합하여 사용

Program.cs
Program.cs 파일은 .NET Core 및 ASP.NET Core 애플리케이션에서 진입점을 정의
이 파일은 애플리케이션이 시작될 때 처음 실행되는 코드를 포함하고 있으며, 주로 애플리케이션의 설정과 기본적인 실행을 담당합니다.
주요 역할
- 메인 진입점:
애플리케이션 실행의 시작점을 정의합니다. - 호스트 빌드:
웹 애플리케이션의 웹 호스트를 구성하고 빌드합니다. - 서비스 구성:
종속성 주입(DI), 미들웨어, 설정 등을 포함하여 애플리케이션의 기본 설정을 구성합니다.
// 웹 애플리케이션을 생성하기 위한 빌더 객체를 생성
var builder = WebApplication.CreateBuilder(args);
// 서비스 컨테이너에 서비스 추가
// 컨트롤러 서비스를 추가하여 MVC 패턴을 지원
builder.Services.AddControllers();
// Swagger/OpenAPI 설정을 위한 서비스 추가
builder.Services.AddEndpointsApiExplorer(); // API 엔드포인트 탐색기 추가
builder.Services.AddSwaggerGen(); // Swagger 생성을 위한 서비스 추가
// 애플리케이션 빌드
var app = builder.Build();
// HTTP 요청 파이프라인 구성
if (app.Environment.IsDevelopment())
{
// 개발 환경에서만 Swagger를 사용하도록 설정
app.UseSwagger();
app.UseSwaggerUI();
}
// HTTP 요청을 HTTPS로 리디렉션
app.UseHttpsRedirection();
// 권한 부여 미들웨어 사용
app.UseAuthorization();
// 컨트롤러에 대한 요청을 매핑
app.MapControllers();
// 애플리케이션 실행
app.Run();




