Windows Ortamında .NET Projelerinde Batch Scriptler ile Otomasyon

Mustafa Dikyar
3 min readJan 18, 2025

--

Herkese selam, bu makalede Windows ortamında .NET projelerinde Batch Script kullanarak nasıl standart bir proje kurulum süreci oluşturabileceğimizden bahsedeceğim.

Herkesin malumu bir .Net projesi oluştururken genellikle çok fazla tekrar eden adımlar ile karşılaşırız.

Örnek vermek gerekirse; solution oluşturma, projelerin eklenmesi, nuGet paketlerinin yüklenmesi, folder structure’ın oluşturulması, proje referanslarının eklenmesi gibi işlemler her defasında manuel olarak tekrar tekrar yapmak hem zaman kaybını hem de hata riskini beraberinde getiriyor.

Batch Script ile bu süreci otomatikleştirebilir ve standardize edebiliriz.

Aynı zamanda script dosyaları bir dokümantasyon görevi de görür.

Kurulum

Proje Yapısı

İlk olarak projemiz için örnek bir klasör yapısını belirleyelim:

ProjectName/
├── src/
│ ├── ProjectName.Domain/
│ ├── ProjectName.Application/
│ ├── ProjectName.Infrastructure/
│ └── ProjectName.API/
└── tests/
├── ProjectName.UnitTests/
└── ProjectName.IntegrationTests/

Script Dosyalarımız

Projemizi kurmak için temel script dosyalarını oluşturalım.

setup.bat — Kurulum Scripti

@echo off
setlocal enabledelayedexpansion

REM Assign project name to a variable
set PROJECT_NAME=ProjectName

echo 🚀 Creating %PROJECT_NAME% project...

REM Create the main directory
mkdir %PROJECT_NAME%
cd %PROJECT_NAME%

REM Create the solution
dotnet new sln

REM Create main folders
mkdir src
mkdir tests

REM Domain Layer
echo 📦 Creating Domain Layer...
dotnet new classlib -o src\%PROJECT_NAME%.Domain
dotnet add src\%PROJECT_NAME%.Domain\%PROJECT_NAME%.Domain.csproj package MongoDB.Bson

REM Application Layer
echo 📦 Creating Application Layer...
dotnet new classlib -o src\%PROJECT_NAME%.Application
dotnet add src\%PROJECT_NAME%.Application\%PROJECT_NAME%.Application.csproj package AutoMapper
dotnet add src\%PROJECT_NAME%.Application\%PROJECT_NAME%.Application.csproj reference src\%PROJECT_NAME%.Domain\%PROJECT_NAME%.Domain.csproj

REM Infrastructure Layer
echo 📦 Creating Infrastructure Layer...
dotnet new classlib -o src\%PROJECT_NAME%.Infrastructure
dotnet add src\%PROJECT_NAME%.Infrastructure\%PROJECT_NAME%.Infrastructure.csproj package MongoDB.Driver
dotnet add src\%PROJECT_NAME%.Infrastructure\%PROJECT_NAME%.Infrastructure.csproj reference src\%PROJECT_NAME%.Domain\%PROJECT_NAME%.Domain.csproj
dotnet add src\%PROJECT_NAME%.Infrastructure\%PROJECT_NAME%.Infrastructure.csproj reference src\%PROJECT_NAME%.Application\%PROJECT_NAME%.Application.csproj

REM API Layer
echo 📦 Creating API Layer...
dotnet new webapi -o src\%PROJECT_NAME%.API
dotnet add src\%PROJECT_NAME%.API\%PROJECT_NAME%.API.csproj reference src\%PROJECT_NAME%.Domain\%PROJECT_NAME%.Domain.csproj
dotnet add src\%PROJECT_NAME%.API\%PROJECT_NAME%.API.csproj reference src\%PROJECT_NAME%.Application\%PROJECT_NAME%.Application.csproj
dotnet add src\%PROJECT_NAME%.API\%PROJECT_NAME%.API.csproj reference src\%PROJECT_NAME%.Infrastructure\%PROJECT_NAME%.Infrastructure.csproj

REM Test projects
echo 📦 Creating test projects...
dotnet new xunit -o tests\%PROJECT_NAME%.UnitTests
dotnet new xunit -o tests\%PROJECT_NAME%.IntegrationTests

REM Add projects to solution
echo 🔗 Adding projects to the solution...
for /r src %%f in (*.csproj) do (
echo Adding: %%f
dotnet sln add %%f
)
for /r tests %%f in (*.csproj) do (
echo Adding: %%f
dotnet sln add %%f
)

REM Create folder structure
call create-folders.bat

echo ✅ %PROJECT_NAME% project successfully created!
pause

create-folders.bat — Klasör Yapısı

mkdir src\%PROJECT_NAME%.Domain\Common

REM Folders for the Application layer
mkdir src\%PROJECT_NAME%.Application\Common\Behaviors
mkdir src\%PROJECT_NAME%.Application\Common\Interfaces
mkdir src\%PROJECT_NAME%.Application\DTOs
mkdir src\%PROJECT_NAME%.Application\Features
mkdir src\%PROJECT_NAME%.Application\Mappings

REM Folders for the Infrastructure layer
mkdir src\%PROJECT_NAME%.Infrastructure\Authentication
mkdir src\%PROJECT_NAME%.Infrastructure\Persistence
mkdir src\%PROJECT_NAME%.Infrastructure\Services

REM Folders for the API layer
mkdir src\%PROJECT_NAME%.API\GraphQL\Mutations
mkdir src\%PROJECT_NAME%.API\GraphQL\Queries
mkdir src\%PROJECT_NAME%.API\GraphQL\Types
mkdir src\%PROJECT_NAME%.API\Configuration

echo ✅ Folder structure successfully created!

Nasıl Kullanırız?

  • Her iki .bat dosyasını projenizin root dizinine kaydedin.
  • setup.bat dosyasına çift tıklayın veya Command Prompt’ta aşağıdaki komutu çalıştırın.
setup.bat

Ekstra

Hata Kontrolü : İhtiyaç halinde istenilen komutlardan sonra hata kontrolü yapılabilir. Örnek isterseniz buyrun:

IF %ERRORLEVEL% NEQ 0 (
echo ❌ An error occurred!
pause
exit /b %ERRORLEVEL%
)

Çıktı

Haydi scriptleri çalıştıralım ve çıktıları gözlemleyelim.

Her şey yolunda gözüküyor. Projemizi incelediğimiz zaman; projelerin oluştuğunu, referansların eklendiğini, nuGet paketlerinin yüklendiğini ve diğer şeylerin başarılı bir şekilde oluştuğunu gözlemleyebiliyoruz.

--

--

Responses (1)