Merhaba arkadaşlar, bugün sizlerle bir projeyi .Net 5’ten .Net 6’ya geçirmeye çalışacağız. Öncelikle .Net 6 hakkında yazdığım yazıya göz atabilirsiniz.
Bu işlemi en basit geçişten başlayarak bir kaç adımda tamamlayacağız.
- İlk önce var olan proje yapımızı tutarak sadece frameworkumuzu .net 6 ya geçireceğiz. (Evet, buna izin veriliyor).
- İlk adımı gerçekleştirdikten sonra .net 6 daki program.cs yapısına uygulamamızı geçireceğiz, startup dosyamızı kaldıracağız.
- Birinci ve ikinci adımı gerçekleştirdikten sonra uygulamamızı minimal api formatına geçireceğiz.
Burada yalnızca ilk adım zorunludur, yani mevcut proje yapınızı koruyarak .Net 6′ ya geçiş yapabilirsiniz.

1- Frameworkumuzu net 6.0’a yükseltelim. Eğer farklı nuget paketlerimizin güncellemeleri varsa bunları gerçekleştirelim.
1 2 3 4 5 |
<PropertyGroup> <TargetFramework>net6.0</TargetFramework> <!--<Nullable>enable</Nullable> optional <ImplicitUsings>enable</ImplicitUsings> optional--> </PropertyGroup> |
2- Startup sınıfımızı Program.cs içerisine geçirerek, kaldıralım. (1.adımdan sonra – opsiyonel)
3- Controller ve actionlarımızı minimal api formatına geçirerek, uygulamamızdan kaldıralım. (1.ve 2. adımdan sonra – opsiyonel)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IPersonService, PersonService>(); services.AddControllers(); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "Net5Api", Version = "v1" }); }); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseSwagger(); app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "Net5Api v1")); } app.UseHttpsRedirection(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); } |
Yeni Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
var builder = WebApplication.CreateBuilder(args); builder.Services.AddSingleton<IPersonService, PersonService>(); builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "Net5Api", Version = "v1" }); }); var app = builder.Build(); app.MapPeopleEndpoints(); if (app.Environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseSwagger(); app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "Net5Api v1")); } app.UseHttpsRedirection(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); app.Run(); |
app.MapPeopleEndpoints() kullanmamızı sağlayan , minimal api endpoint extensionı
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
public static class UrlMapExtension { public static void MapPeopleEndpoints(this WebApplication app) { #region Minimal Apis app.MapGet("/api/people", [Produces("application/json")] [ProducesResponseType(typeof(List<Person>), StatusCodes.Status200OK)] ([FromServices] IPersonService _personService) => { return Results.Ok(_personService.GetAll()); }); app.MapGet("/api/people/{id}", (int id, [FromServices] IPersonService _personService) => { var person = _personService.GetPerson(id); if (person == null) return Results.NotFound(); return Results.Ok(person); }) .Produces<Person>(StatusCodes.Status200OK) .Produces(StatusCodes.Status404NotFound); app.MapPost("/api/people", ([FromBody] Person person, [FromServices] IPersonService _personService) => { var isAdded = _personService.InsertPerson(person); if (!isAdded) return Results.BadRequest(); return Results.Created("/api/people", isAdded); }) .Produces<bool>(StatusCodes.Status201Created) .Produces(StatusCodes.Status400BadRequest); #endregion } } |
Umarım faydalı olmuştur, kalın sağlıcakla…
Microsoft Migration Link;