.NET Core Proje Yapıları

.NET Core projeleri belirli bir dizin yapısı, yapılandırma dosyaları ve bağımlılık yönetimi prensiplerine göre organize edilir. Bu bölümde, .NET Core’daki proje yapısını, .csproj dosyasını, çözüm (Solution) kavramını ve bağımlılık yönetimini detaylı bir şekilde inceleyeceğiz.

1. .NET Core Proje Yapısı

.NET Core projeleri oluşturduğunuzda aşağıdaki temel klasör ve dosya yapısı ile karşılaşırsınız:

1.1. Temel Proje Yapısı (Console App Örneği)

Bir Console projesi oluşturduğunuzda dizin yapısı şu şekilde olacaktır:

C#
MyFirstApp/
│── MyFirstApp.csproj    # Proje yapılandırma dosyası
│── Program.cs           # Giriş noktası (main)
│── bin/                 # Derleme çıktıları
│── obj/                 # Geçici dosyalar
C#

1.2. Web API Proje Yapısı

ASP.NET Core Web API projelerinde ise yapı biraz daha geniş olur:

C#
MyWebApi/
│── MyWebApi.csproj      # Proje yapılandırma dosyası
│── Program.cs           # Ana giriş noktası
│── Startup.cs           # Servis yapılandırmaları
│── Controllers/         # API Controller dosyaları
│── Models/              # Veri modelleri
│── Services/            # Servis katmanı
│── bin/                 # Derleme çıktıları
│── obj/                 # Geçici dosyalar
│── appsettings.json     # Uygulama yapılandırma dosyası
│── wwwroot/             # Statik dosyalar (Web projelerinde)
C#

📌 Özetle:

  • Program.cs: Uygulamanın giriş noktasıdır.
  • Startup.cs: (Web projelerinde) Middleware ve servislerin yapılandırıldığı dosyadır.
  • appsettings.json: Uygulama ayarlarını yönetmek için kullanılır.
  • bin/ ve obj/ klasörleri derleme sürecinde kullanılır.

2. .csproj Dosyası (Proje Dosyası)

.csproj dosyası, bir .NET Core projesinin temel yapılandırma dosyasıdır ve XML formatında yazılmıştır.

2.1. Örnek .csproj Dosyası (Console App)

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  </ItemGroup>
</Project>
C#

📌 Açıklamalar:

  • Sdk="Microsoft.NET.Sdk" → .NET Core SDK’sını belirler.
  • OutputTypeExe veya Library olabilir.
  • TargetFramework → Projenin çalışacağı .NET sürümünü belirler.
  • ItemGroup > PackageReference → NuGet bağımlılıklarını listeler.

.csproj dosyasını elle düzenleyebilir veya aşağıdaki komutla bağımlılık ekleyebilirsiniz:

dotnet add package Newtonsoft.Json
C#

3. Solution (Çözüm) Nedir?

Solution (.sln), birden fazla .NET Core projesini organize eden bir dosyadır. Büyük projelerde birden fazla .csproj içerebilir.

3.1. Solution Dosyası Oluşturma

  1. Solution oluşturun:
dotnet new sln -n MySolution
C#
  1. Projeyi solution’a ekleyin:
dotnet sln MySolution.sln add MyFirstApp/MyFirstApp.csproj
C#
  1. Solution içindeki projeleri listeleyin:
dotnet sln list
C#

📌 Kullanım Senaryoları:

  • Katmanlı mimari kullanırken, her katman için ayrı .csproj dosyası olabilir.
  • Tek bir çözüm (Solution) dosyası, tüm projeleri yönetir.

Örnek dizin yapısı:

C#
MySolution/
│── MySolution.sln
│── MyApp.Core/
│   │── MyApp.Core.csproj
│── MyApp.Web/
│   │── MyApp.Web.csproj
C#

4. Dependency Management (Bağımlılık Yönetimi)

.NET Core, bağımlılıkları yönetmek için NuGet paket yöneticisini kullanır.

4.1. NuGet ile Paket Ekleme

Bir paketi projeye eklemek için:

dotnet add package PaketAdi
C#

Örnek olarak Newtonsoft.Json ekleyelim:

dotnet add package Newtonsoft.Json
C#

📌 Bu işlem, csproj dosyasına paketi ekler.

4.2. Tüm Bağımlılıkları Yükleme

Projede eksik bağımlılıklar varsa:

dotnet restore
C#

4.3. Paketleri Güncelleme

Tüm bağımlılıkları güncellemek için:

dotnet outdated
dotnet add package PaketAdi --version 13.0.3
C#

4.4. Paketleri Kaldırma

Bir bağımlılığı kaldırmak için:

dotnet remove package PaketAdi
C#

Örneğin:

dotnet remove package Newtonsoft.Json
C#

📌 Bu komut csproj dosyasından bağımlılığı kaldırır.

5. DLL Referansları ile Bağımlılık Yönetimi

Projeler arası bağımlılıkları yönetmek için iki yöntem vardır:

  1. NuGet paketleri ile bağımlılık eklemek.
  2. DLL referansları ile manuel bağımlılık eklemek.

Örneğin, bir projeye başka bir projeyi eklemek için:

dotnet add reference ../MyApp.Core/MyApp.Core.csproj
C#

6. Proje Konfigürasyonları (Debug ve Release Modları)

.NET Core projeleri genellikle Debug ve Release modlarında çalıştırılabilir.

6.1. Debug Modunda Çalıştırma

Geliştirme sırasında hata ayıklama için:

dotnet run
C#

6.2. Release Modunda Çalıştırma

Performans için optimize edilmiş sürüm:

dotnet build --configuration Release
dotnet run --configuration Release
C#