.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:
MyFirstApp/
│── MyFirstApp.csproj # Proje yapılandırma dosyası
│── Program.cs # Giriş noktası (main)
│── bin/ # Derleme çıktıları
│── obj/ # Geçici dosyalarC#1.2. Web API Proje Yapısı
ASP.NET Core Web API projelerinde ise yapı biraz daha geniş olur:
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.OutputType→ExeveyaLibraryolabilir.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.JsonC#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
- Solution oluşturun:
dotnet new sln -n MySolutionC#- Projeyi solution’a ekleyin:
dotnet sln MySolution.sln add MyFirstApp/MyFirstApp.csprojC#- Solution içindeki projeleri listeleyin:
dotnet sln listC#📌 Kullanım Senaryoları:
- Katmanlı mimari kullanırken, her katman için ayrı
.csprojdosyası olabilir. - Tek bir çözüm (Solution) dosyası, tüm projeleri yönetir.
Örnek dizin yapısı:
MySolution/
│── MySolution.sln
│── MyApp.Core/
│ │── MyApp.Core.csproj
│── MyApp.Web/
│ │── MyApp.Web.csprojC#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 PaketAdiC#Örnek olarak Newtonsoft.Json ekleyelim:
dotnet add package Newtonsoft.JsonC#📌 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 restoreC#4.3. Paketleri Güncelleme
Tüm bağımlılıkları güncellemek için:
dotnet outdated
dotnet add package PaketAdi --version 13.0.3C#4.4. Paketleri Kaldırma
Bir bağımlılığı kaldırmak için:
dotnet remove package PaketAdiC#Örneğin:
dotnet remove package Newtonsoft.JsonC#📌 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:
- NuGet paketleri ile bağımlılık eklemek.
- 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.csprojC#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 runC#6.2. Release Modunda Çalıştırma
Performans için optimize edilmiş sürüm:
dotnet build --configuration Release
dotnet run --configuration ReleaseC#