Visual studio WPF Basic Folder Structure

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.jsonappsettings.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();

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤