본문으로 건너뛰기

.NET 도구 가이드

이 문서는 프로젝트에서 사용하는 .NET 도구의 상세 사용법을 다룹니다. CLI 도구, 소스 생성기, .NET 10 파일 기반 프로그램의 세 가지 카테고리로 분류하여 설명합니다.

“코드 커버리지 리포트를 매번 수동으로 생성하고 있지는 않은가?” “스냅샷 테스트 결과를 일일이 승인하는 데 시간을 소비하고 있지는 않은가?” “EF Core 스키마 변경 시 ER 다이어그램을 수동으로 업데이트하고 있지는 않은가?”

코드 커버리지 리포트 생성, 스냅샷 테스트 승인, ER 다이어그램 생성, 느린 테스트 분석 등 반복적인 개발 작업은 .NET 도구로 자동화할 수 있습니다. 적절한 도구를 빌드 파이프라인에 통합하면 수동 작업을 줄이고 개발 흐름에 집중할 수 있습니다.

이 문서를 통해 다음을 학습합니다:

  1. CLI 도구 관리와 사용법 - ReportGenerator, Verify.Tool, Siren의 파라미터와 실행 방법
  2. 소스 생성기 활용 - EntityIdGenerator, ObservablePortGenerator의 트리거와 생성 결과
  3. Source Generator 디버깅 - 테스트 프로젝트 기반 디버깅과 Debugger.Launch() 방법
  4. .NET 10 파일 기반 프로그램 - SummarizeSlowestTests, ApiGenerator 등 스크립트 실행
  5. 새 도구 추가 체크리스트 - CLI 도구, 소스 생성기, 스크립트별 추가 절차

.NET 도구 활용의 핵심은 반복적인 개발 작업을 CLI 도구와 소스 생성기로 자동화하여, 빌드 파이프라인에 통합하는 것입니다.

Terminal window
# 도구 복원 (클론 후)
dotnet tool restore
# 커버리지 리포트 생성
dotnet reportgenerator -reports:**/*.cobertura.xml -targetdir:.coverage/reports/html -reporttypes:"Html;Cobertura"
# Verify 스냅샷 승인
dotnet verify accept -y
# ER 다이어그램 생성
dotnet siren-gen -a bin/Release/net10.0/MyApp.Persistence.dll -o ER-Diagram.md
# 느린 테스트 분석
dotnet .coverage/scripts/SummarizeSlowestTests.cs --glob "**/*.trx" --threshold 30

1. 새 CLI 도구 추가:

  1. dotnet tool install <package-name> (매니페스트에 자동 등록)
  2. rollForward 설정 확인 (도구 대상 프레임워크가 현재 SDK보다 낮으면 true)
  3. 관련 문서 업데이트

2. Source Generator 디버깅:

  1. 테스트 프로젝트에서 브레이크포인트 설정 (권장)
  2. Test Explorer에서 Debug 실행
  3. F11로 Generator 내부 진입
카테고리도구용도
CLI 도구ReportGenerator코드 커버리지 HTML 리포트
CLI 도구Verify.Tool스냅샷 테스트 승인
CLI 도구SirenEF Core → Mermaid ER 다이어그램
소스 생성기EntityIdGeneratorUlid 기반 EntityId 자동 생성
소스 생성기ObservablePortGeneratorObservability 래핑 Pipeline 생성
소스 생성기UnionTypeGeneratorUnion 타입 Match/Switch 메서드 자동 생성
.NET 10 스크립트SummarizeSlowestTests느린 테스트 분석 리포트

이 가이드는 프로젝트에서 사용하는 .NET 도구의 상세 사용법을 다룹니다. 도구는 세 가지 카테고리로 분류됩니다.

다음 테이블은 도구 카테고리별 특성과 대표 도구를 정리한 것입니다.

카테고리설명예시
CLI 도구dotnet tool 매니페스트 관리ReportGenerator, Verify.Tool, Siren
소스 생성기컴파일 시 코드 자동 생성EntityIdGenerator, ObservablePortGenerator
.NET 10 스크립트.cs 파일 직접 실행SummarizeSlowestTests, ApiGenerator

02-solution-configuration.md와의 관계: dotnet-tools.json 매니페스트 생성/관리 방법과 빌드 스크립트 파이프라인 개요는 02-solution-configuration.md를 참조하세요. 이 문서는 각 도구의 목적, 명령어, 파라미터, 실행 예시를 다룹니다.

CLI 도구는 .config/dotnet-tools.json 매니페스트로 관리됩니다. 매니페스트 생성, 도구 설치/복원 방법은 02-solution-configuration.md §.config/dotnet-tools.json을 참조하세요.

rollForward 설정:

동작사용 시기
false (기본)도구의 대상 프레임워크와 정확히 일치하는 런타임 필요도구와 SDK 버전이 일치할 때
true상위 버전 런타임에서 실행 허용도구가 이전 버전 대상일 때 (예: .NET 9 도구를 .NET 10 SDK에서 실행)

Build-Local.ps1 Step 1에서 dotnet tool restore를 자동으로 수행합니다.

항목
패키지dotnet-reportgenerator-globaltool
명령reportgenerator
용도Cobertura XML → HTML/Markdown 커버리지 리포트 변환

독립 실행:

Terminal window
dotnet reportgenerator `
-reports:.coverage/reports/**/*.cobertura.xml `
-targetdir:.coverage/reports/html `
-reporttypes:"Html;Cobertura;MarkdownSummaryGithub"

주요 파라미터:

파라미터설명예시
-reports입력 커버리지 파일 (glob)**/*.cobertura.xml
-targetdir출력 디렉토리.coverage/reports/html
-reporttypes리포트 형식Html;Cobertura;MarkdownSummaryGithub
-assemblyfilters어셈블리 포함/제외+MyApp*;-*.Tests*
-filefilters소스 파일 포함/제외-**/AssemblyReference.cs

Build-Local.ps1 Step 7에서 자동으로 HTML + Cobertura + Markdown 리포트를 생성합니다.

항목
패키지verify.tool
명령dotnet-verify
용도Verify.Xunit 스냅샷 .received.verified 승인

실행:

Terminal window
dotnet verify accept -y

사용 시기:

  • 스냅샷 테스트 실행 후 *.received.* 파일이 생성되었을 때
  • 의도적으로 출력이 변경되어 새 스냅샷을 승인해야 할 때

Build-VerifyAccept.ps1이 이 명령을 자동으로 수행합니다.

항목
패키지gman.siren
명령siren-gen
용도EF Core DbContext → Mermaid ER 다이어그램 생성
rollForwardtrue (.NET 9 도구를 .NET 10에서 실행)

입력 모드:

모드플래그설명
어셈블리-a <dll 경로>Migration이 포함된 어셈블리에서 스키마 추출
연결 문자열-c <connection string>기존 데이터베이스에서 스키마 읽기

실행 예시:

Terminal window
# 어셈블리 모드 (Migration 사용 프로젝트)
dotnet siren-gen `
-a bin/Release/net10.0/MyApp.Persistence.dll `
-o ER-Diagram.md
# 연결 문자열 모드 (기존 DB)
dotnet siren-gen `
-c "Data Source=myapp.db" `
-o ER-Diagram.md

주요 파라미터:

파라미터설명
-o, --outputPath출력 Markdown 파일 경로 (필수)
-a, --assemblyPathMigration 어셈블리 DLL 경로
-c, --connectionString데이터베이스 연결 문자열
-f, --filterEntities포함할 Entity 이름 필터 (쉼표 구분)
-s, --skipEntities제외할 Entity 이름 (쉼표 구분)
-h, --filterSchemas포함할 스키마 필터
-x, --skipSchemas제외할 스키마
-t, --template렌더링 템플릿 (기본: default)

제약 사항:

  • 어셈블리 모드(-a): EF Core Migrations 필수. EnsureCreated() 패턴 프로젝트에서는 동작하지 않음
  • 연결 문자열 모드(-c): SQL Server 전용. SQLite/InMemory 미지원

Siren은 Mermaid 다이어그램을 이미지로 렌더링하는 범용 도구이지만, 여기서는 EF Core → Mermaid ER 다이어그램 생성 기능만 사용합니다.

이 제약으로 인해 프로젝트에서는 Build-ERDiagram.ps1 스크립트(§Build-ERDiagram.ps1 참조)로 EF Core Configuration 기반 Mermaid ER 다이어그램을 직접 생성합니다. 예시: Tests.Hosts/01-SingleHost/ER-Diagram.md

Build-ERDiagram.ps1 (ER 다이어그램 직접 생성)

섹션 제목: “Build-ERDiagram.ps1 (ER 다이어그램 직접 생성)”
항목
위치Tests.Hosts/01-SingleHost/Build-ERDiagram.ps1
용도EF Core Configuration 기반 Mermaid ER 다이어그램 생성
출력Tests.Hosts/01-SingleHost/ER-Diagram.md

Siren 도구의 제약(Migration 필수 또는 SQL Server 전용)을 우회하여, 스크립트 내부에 정의된 ER 다이어그램 템플릿을 ER-Diagram.md로 출력합니다. 스키마 변경 시 스크립트 내부의 $erDiagram 변수를 수동으로 업데이트해야 합니다.

실행:

Terminal window
# Tests.Hosts/01-SingleHost/ 디렉토리에서 실행
./Build-ERDiagram.ps1
# 도움말
./Build-ERDiagram.ps1 -Help

참조 파일: EF Core Configuration 변경 시 다음 파일을 참고하여 스크립트를 업데이트하세요:

  • Src/LayeredArch.Adapters.Persistence/Repositories/EfCore/Configurations/

CLI 도구가 빌드 파이프라인에서 독립적으로 실행된다면, 소스 생성기는 컴파일 시점에 자동으로 코드를 생성합니다.

항목
프로젝트Src/Functorium.SourceGenerators
대상netstandard2.0 (Roslyn 요구사항)
NuGet 패키징analyzers/dotnet/cs 경로에 배치

제공 생성기:

다음 테이블은 Functorium이 제공하는 소스 생성기와 각각이 생성하는 코드를 정리한 것입니다.

생성기트리거 어트리뷰트생성 결과
EntityIdGenerator[GenerateEntityId]EntityId struct + EF Core Converter/Comparer
ObservablePortGenerator[GenerateObservablePort]Observability 래핑 Pipeline 클래스
UnionTypeGenerator[UnionType]abstract partial record에 대한 Match/Switch 메서드 자동 생성

[GenerateEntityId]를 Entity/AggregateRoot 클래스에 적용하면 Ulid 기반 EntityId를 자동 생성합니다.

[GenerateEntityId]
public sealed class Product : AggregateRoot<ProductId> { ... }

생성되는 코드:

  • ProductId record struct — IEntityId<ProductId>, IParsable<ProductId> 구현
  • ProductIdConverter — EF Core ValueConverter<ProductId, string>
  • ProductIdComparer — EF Core ValueComparer<ProductId>
  • JSON 직렬화/역직렬화 (JsonConverter)
  • 비교 연산자 (<, >, <=, >=)

[GenerateObservablePort]을 IObservablePort 구현 클래스에 적용하면 Observability 래핑 Pipeline을 자동 생성합니다.

[GenerateObservablePort]
public class EfCoreProductRepository : IProductRepository { ... }

생성되는 코드:

  • EfCoreProductRepositoryPipeline 클래스 — 원본 클래스를 상속
  • 각 메서드를 override하여 추가:
    • ActivitySource 분산 추적 (span 생성)
    • ILogger 구조화된 로깅 (요청/응답/에러)
    • IMeterFactory 메트릭 (카운터, 히스토그램)
    • 에러 분류 (Expected vs Exceptional)

[UnionType]abstract partial record에 적용하면 패턴 매칭 메서드를 자동 생성합니다.

[UnionType]
public abstract partial record Shape
{
public sealed record Circle(double Radius) : Shape;
public sealed record Rectangle(double Width, double Height) : Shape;
}

생성되는 코드:

  • Match<TResult>(...) — 모든 파생 타입에 대한 exhaustive 패턴 매칭
  • Switch(...) — void 반환 버전의 패턴 매칭
항목
패키지Mediator.SourceGenerator (v3.0.1)
용도Mediator 패턴 핸들러 코드 자동 생성

주의 사항: 테스트 프로젝트에서 호스트 프로젝트를 참조할 때, Mediator.SourceGenerator가 중복 실행되어 빌드 오류가 발생할 수 있습니다. 이 경우 호스트 프로젝트 참조에 ExcludeAssets="analyzers"를 추가합니다.

<ProjectReference Include="..." ExcludeAssets="analyzers" />
방법안정성반복성권장
테스트 프로젝트에서 디버깅높음높음권장
Debugger.Launch() 사용중간중간긴급 시
Attach to Process낮음낮음비권장

방법 1: 테스트 프로젝트에서 디버깅 (권장)

섹션 제목: “방법 1: 테스트 프로젝트에서 디버깅 (권장)”

기존 단위 테스트를 활용하여 소스 생성기를 디버깅합니다.

  1. 테스트 파일에서 브레이크포인트 설정 (예: _sut.Generate(input) 호출 지점)
  2. 소스 생성기 코드에도 브레이크포인트 설정
  3. Visual Studio Test Explorer에서 Debug 또는 코드 위 Debug Test 클릭
  4. F11 (Step Into)로 소스 생성기 내부로 진입

장점: 컴파일러 프로세스 타이밍 문제 없음, 같은 입력으로 여러 번 테스트 가능, 전체 빌드 불필요

컴파일 시작 시 자동으로 디버거 연결 대화상자를 표시합니다.

  1. Generator 클래스의 AttachDebugger 파라미터를 true로 설정:
    [Generator(LanguageNames.CSharp)]
    public sealed class ObservablePortGenerator()
    : IncrementalGeneratorBase<ObservableClassInfo>(
    RegisterSourceProvider,
    Generate,
    AttachDebugger: true) // 디버깅 활성화
  2. Visual Studio 완전히 재시작
  3. 소스 생성기를 사용하는 프로젝트 빌드
  4. Just-In-Time Debugger 대화상자에서 현재 VS 인스턴스 선택
  5. 디버깅 종료 후 반드시 AttachDebugger: false로 되돌리기 (커밋 금지)

생성된 코드 확인: Solution Explorer > Dependencies > Analyzers > Functorium.SourceGenerators 하위에서 생성된 .g.cs 파일 확인

빌드 로그에서 확인:

Terminal window
dotnet build Observability.Adapters.Infrastructure -v:diag > build.log
# build.log에서 "SourceGenerator" 검색

Watch 창 유용한 표현식:

classSymbol.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)
classSymbol.AllInterfaces.Select(i => i.Name).ToArray()
method.Parameters.Select(p => p.Type.ToDisplayString()).ToArray()

조건부 브레이크포인트: 브레이크포인트 우클릭 > Conditions에서 className == "RepositoryIo" 등 조건 설정

증상원인해결
디버거 연결 안 됨VS 관리자 권한 부족관리자 권한으로 VS 실행
브레이크포인트 속이 빈 원심볼 미로드VS 재시작 + bin/obj 삭제 후 재빌드
코드 변경 미반영빌드 캐시VS 종료 → bin/obj 삭제 → VS 재시작 → Clean → Rebuild
테스트 디버깅 불가ProjectReference 설정OutputItemType="Analyzer" ReferenceOutputAssembly="true" 확인

소스 생성기가 컴파일 시점에 동작한다면, .NET 10 파일 기반 프로그램은 별도 빌드 없이 .cs 파일을 직접 실행합니다.

.NET 10은 .cs 파일을 직접 실행하는 “파일 기반 프로그램”을 지원합니다. NuGet 의존성은 #:package 지시문으로 선언합니다.

각 스크립트 폴더에는 루트 Directory.Build.props의 Source Link 의존성을 차단하는 자체 Directory.Build.props가 있습니다. 자세한 내용은 02-solution-configuration.md §중첩 구성 파일을 참조하세요.

항목
위치.coverage/scripts/SummarizeSlowestTests.cs
용도TRX 테스트 결과에서 느린 테스트 분석 리포트 생성
NuGetSystem.CommandLine, Microsoft.Extensions.FileSystemGlobbing

생성하는 리포트:

  • 전체 테스트 통계 (passed, failed, skipped)
  • 테스트 프로젝트별 실행 시간 분포
  • 상위 100개 느린 테스트 목록
  • 실패 테스트 요약
  • 백분위 분석 (50th, 90th, 95th, 99th)

실행:

Terminal window
dotnet .coverage/scripts/SummarizeSlowestTests.cs `
--glob "**/*.trx" `
--threshold 30 `
--output .coverage/reports

주요 파라미터:

파라미터설명기본값
--globTRX 파일 검색 패턴
--threshold느린 테스트 판단 기준 (초)30
--output리포트 출력 디렉토리

Build-Local.ps1 Step 9에서 자동으로 수행됩니다.

항목
위치.release-notes/scripts/ApiGenerator.cs
용도컴파일된 DLL에서 Public API 표면 텍스트 생성
NuGetPublicApiGenerator

동작:

  1. 지정된 DLL의 Public API를 추출
  2. .NET 10 / ASP.NET Core 참조 어셈블리를 자동으로 해석
  3. 텍스트 또는 파일로 API 정의 출력

실행:

Terminal window
dotnet .release-notes/scripts/ApiGenerator.cs `
--dll-path bin/Release/net10.0/MyLib.dll `
--output-path .api/MyLib.cs
항목
위치.release-notes/scripts/ExtractApiChanges.cs
용도브랜치 간 API 변경 사항 추출 (릴리스 노트용)
NuGetSystem.CommandLine, Spectre.Console

동작:

  1. Functorium 소스 프로젝트를 검색 (테스트 제외)
  2. 각 프로젝트를 Release 모드로 publish
  3. ApiGenerator.cs를 호출하여 API 파일 생성
  4. 전체 API를 하나의 uber 파일로 병합
  5. Git diff로 변경 사항 추출
  6. 요약 리포트 생성

출력: .analysis-output/api-changes-build-current/

개별 도구의 상세 사용법을 살펴보았으므로, 마지막으로 전체 도구를 한눈에 조망합니다.

다음 테이블은 CLI 도구, 소스 생성기, 스크립트를 카테고리별로 정리한 전체 맵입니다.

패키지명령용도Build-Local.ps1 단계
dotnet-reportgenerator-globaltoolreportgenerator커버리지 리포트Step 7
verify.tooldotnet-verify스냅샷 승인Build-VerifyAccept.ps1
gman.sirensiren-genER 다이어그램수동 실행
생성기어트리뷰트프로젝트
EntityIdGenerator[GenerateEntityId]Functorium.SourceGenerators
ObservablePortGenerator[GenerateObservablePort]Functorium.SourceGenerators
UnionTypeGenerator[UnionType]Functorium.SourceGenerators
Mediator.SourceGenerator인터페이스 기반NuGet (v3.0.1)
파일용도Build-Local.ps1 단계
.coverage/scripts/SummarizeSlowestTests.cs느린 테스트 분석Step 9
.release-notes/scripts/ApiGenerator.csPublic API 표면 생성수동/릴리스
.release-notes/scripts/ExtractApiChanges.csAPI 변경 사항 추출수동/릴리스
  1. dotnet tool install <package-name> (매니페스트에 자동 등록)
  2. .config/dotnet-tools.json에서 rollForward 설정 확인 (도구 대상 프레임워크가 현재 SDK보다 낮으면 true)
  3. 02-solution-configuration.md의 도구 목록 테이블 업데이트
  4. 이 문서에 상세 사용법 섹션 추가
  1. Directory.Packages.props<PackageVersion> 추가
  2. 사용 프로젝트 .csproj<PackageReference> 추가
  3. 테스트 프로젝트 참조 시 ExcludeAssets="analyzers" 필요 여부 확인
  1. 적절한 디렉토리에 .cs 파일 생성
  2. #:package 지시문으로 NuGet 의존성 선언
  3. 해당 폴더에 Directory.Build.props 존재 여부 확인 (루트 props 차단 필요 시 생성)
  4. Build-CleanRunFileCache.ps1의 대상 패턴 업데이트 고려

증상: dotnet tool restore 시 “The tool … is not supported on the current .NET SDK” 오류

해결: .config/dotnet-tools.json에서 해당 도구의 rollForwardtrue로 설정합니다.

"tool-name": {
"version": "x.y.z",
"commands": ["cmd"],
"rollForward": true
}

.NET 10 스크립트 패키지 로딩 오류

섹션 제목: “.NET 10 스크립트 패키지 로딩 오류”

증상: System.CommandLine 등 패키지가 로드되지 않거나, 이전 버전 캐시가 사용됨

해결: Build-CleanRunFileCache.ps1로 runfile 캐시를 정리합니다.

Terminal window
# 특정 스크립트 캐시 정리
./Build-CleanRunFileCache.ps1
# 모든 runfile 캐시 정리
./Build-CleanRunFileCache.ps1 -Pattern "All"
# 삭제 대상만 확인
./Build-CleanRunFileCache.ps1 -WhatIf

캐시 위치: %TEMP%\dotnet\runfile\

Source Generator CS0436 타입 충돌 경고

섹션 제목: “Source Generator CS0436 타입 충돌 경고”

증상: warning CS0436: 'AssemblyReference' 형식이 충돌합니다

원인: 프로젝트 A가 Source Generator를 사용하고, 프로젝트 B가 A를 참조하면서 동일한 Source Generator를 사용할 때 발생합니다. InternalsVisibleTo 설정이 있으면 internal 생성 타입이 충돌합니다.

해결 방법 (3가지 조합 가능):

  1. NoWarn 추가 (권장):

    <PropertyGroup>
    <NoWarn>$(NoWarn);CS0436</NoWarn>
    </PropertyGroup>
  2. Generator 비활성화 (Mediator 예시):

    <PropertyGroup>
    <Mediator_DisableGenerator>true</Mediator_DisableGenerator>
    </PropertyGroup>
  3. ExcludeAssets 설정:

    <ProjectReference Include="..\ProjectA\ProjectA.csproj">
    <ExcludeAssets>analyzers</ExcludeAssets>
    </ProjectReference>

영향받는 라이브러리: Mediator, CommunityToolkit.Maui, StronglyTypedId, xUnit 등 Source Generator 패턴을 사용하는 라이브러리에서 공통적으로 발생합니다.

CS0436 경고는 기능에 영향을 주지 않으며 NoWarn으로 안전하게 억제할 수 있습니다. 단, TreatWarningsAsErrors가 활성화된 프로젝트에서는 빌드 실패를 유발하므로 반드시 처리하세요.

증상: siren-gen -a <dll> 실행 시 NullReferenceException 또는 빈 결과

원인: EF Core Migrations를 사용하지 않는 프로젝트(EnsureCreated() 패턴)에서는 어셈블리 모드가 동작하지 않을 수 있습니다.

해결:

  1. 연결 문자열 모드 사용: 먼저 DB를 생성한 후 siren-gen -c "Data Source=..." 실행
  2. Mermaid ER 다이어그램 직접 작성 (수동 대안)

Q1. CLI 도구와 소스 생성기의 차이점은 무엇인가요?

섹션 제목: “Q1. CLI 도구와 소스 생성기의 차이점은 무엇인가요?”

CLI 도구는 dotnet tool 매니페스트로 관리되며 명령줄에서 독립 실행됩니다. 소스 생성기는 NuGet 패키지로 참조되어 컴파일 시 코드를 자동 생성합니다. CLI 도구는 빌드 파이프라인에서, 소스 생성기는 개발 중 실시간으로 동작합니다.

Q2. rollForward를 true로 설정해야 하는 경우는 언제인가요?

섹션 제목: “Q2. rollForward를 true로 설정해야 하는 경우는 언제인가요?”

도구의 대상 프레임워크가 현재 SDK 버전보다 낮을 때 설정합니다. 예를 들어 .NET 9 대상 도구를 .NET 10 SDK에서 실행하려면 rollForward: true가 필요합니다. 현재 gman.siren이 이 설정을 사용합니다.

Q3. .NET 10 파일 기반 프로그램에서 패키지 오류가 발생하면 어떻게 하나요?

섹션 제목: “Q3. .NET 10 파일 기반 프로그램에서 패키지 오류가 발생하면 어떻게 하나요?”

Build-CleanRunFileCache.ps1로 runfile 캐시를 정리합니다. 캐시 위치는 %TEMP%\dotnet\runfile\이며, -Pattern "All" 옵션으로 모든 캐시를 정리하거나 기본값으로 특정 스크립트 캐시만 정리할 수 있습니다.

Q4. Source Generator가 생성한 코드를 확인하는 방법은 무엇인가요?

섹션 제목: “Q4. Source Generator가 생성한 코드를 확인하는 방법은 무엇인가요?”

Visual Studio의 Solution Explorer에서 Dependencies > Analyzers > Functorium.SourceGenerators 하위에서 생성된 .g.cs 파일을 확인할 수 있습니다. 또는 dotnet build -v:diag > build.log로 빌드 로그를 생성한 후 “SourceGenerator”를 검색합니다.

Q5. Siren 도구로 ER 다이어그램이 생성되지 않는 경우 대안은 무엇인가요?

섹션 제목: “Q5. Siren 도구로 ER 다이어그램이 생성되지 않는 경우 대안은 무엇인가요?”

Siren의 어셈블리 모드는 EF Core Migrations가 필수이고, 연결 문자열 모드는 SQL Server 전용입니다. 이 제약을 우회하기 위해 Build-ERDiagram.ps1 스크립트를 사용하여 EF Core Configuration 기반으로 Mermaid ER 다이어그램을 직접 생성합니다.