.Net Core 2.0 & .Net Standart 2.0 – DailyBuilds

.Net Core, 1.1 versiyonuyla barındırdığı kütüphaneler ile birlikte benim için gayet stabil hale gelmişti ki, ufukta görünen 2.0 (veya 1.2) ve netstandart 2.0 süürmleri, full framework’ten uyarlanacak yüzlerce api’leri ile çok cazip hale gelmeye başladı.

Benim gibi .Net Core üzerinde uygulama geliştiriyorsanız ve size aşağıda ki grafikte bulunan kütüphaneler gerekiyorsa, şimdiden dailybuild versiyonunu indirip denemeye başlayabilir, nisan 2017 gibi release olması beklenen versiyona önceden göz atabilirsiniz.

Öncelikle; https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/dogfooding.md adresinde linki bulunan size uygun son build’i indirin, sonrasında “dotnet –version” ve “dotnet –info” komutlarıyla sdk’nın doğru kurulduğuna “2.0.0-*” versiyon numarasını görüp emin olun.

Hangi versiyonda çalışacağınıza tam emin olmak istiyorsanız, “dotnet new” komutuyla oluşturacağınız mini projenin csproj dosyasında ki versiyonu dikkate almalısınız.

Mevcut projenizde MSBUILD kullandığınızı varsayarsak, csproj dosyasını aşağıda ki gibi düzenleyin;


<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<RuntimeFrameworkVersion>2.0.0-beta-001507-00</RuntimeFrameworkVersion>
</PropertyGroup>

Gerekli olacak dev nuget paketleri için, Nuget kaynağı olarak https://dotnet.myget.org/F/dotnet-core/api/v3/index.json adresini ekleyin.

Sonrasında daha önceden Full Framework’te kullandığınız bir çok kütüphanenin artık tamamen uyarlandığını göreceksiniz.

Happy Hacking!

 

EF 7 – Reverse Engineering

Entity Framework 7 ile birlikte, Database-First olarak adlandırılan, mevcut veritabanından edmx üretme ile kullanılan yöntem son bulmuş oldu. Fakat benim gibi, database first kullanmasanızda, direk code first olarak modelleri ve context’i kendiniz oluşturmak istemeye bilirsiniz. Aslında sizin bir reverse engineer’a ihtiyacınız bulunmakta. EF 6 ile kullanıla bilen bir visual studio eklentisi ile bu işi yapabiliyorduk, yani mevcut veritabanından ilgili model, mapping ve context’i üretebiliyorduk. (https://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d)

EF 7 ve .Net Core 1.0 ile birlikte hayatımıza girmeye başlayan yeni yaklaşımlardan biri command tool’lar oldu. Artık diğer bazı dillerde olduğu gibi komut ekranından bir çok işlemi yapabilmemiz mümkün hale geliyor. Bu command line tool özelliklerinden bizim kullanacağımız ise “EntityFramework.Commands” özelliği. Adım adım ilerleyecek olursak;

  • Sisteminizde .Net Core 1.0 ile birlikte RC1 kurulu olmalı (https://go.microsoft.com/fwlink/?LinkId=627627)
  • Projeniz project.json dosyasında aşağıda ki command ve paketler olmalı;
  • "dependencies": {"EntityFramework.Core": "7.0.0-rc1-final", // core EF7
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final", // MSSQL provider for EF7
    "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final", // MSSQL design tools required for database rev eng
    "EntityFramework.Relational": "7.0.0-rc1-final", // shared between relational stored in EF7
    "EntityFramework.Relational.Design": "7.0.0-rc1-final",
    "EntityFramework.Commands": "7.0.0-rc1-final" // EF7 dnx command line interface commands
    },"commands": {
    "ef": "EntityFramework.Commands"
    }

dnvm

  • Bir command promt açın (cmd.exe) ve “dnvm” komutunu yazın.
  • solda ki ekran görüntüsünde  de göreceğiniz üzere dnvm’i göreceksiniz.
  • bu adımda “dnvm upgrade” komutu vererek, dnvm’ i güncellemeniz ve command-line araçlarının aktifleştirmesini sağlamanız gerekiyor.

 

dnx

  • dnvm’i upgrade ettikten sonra, Dnx (.Net Execution Environment)’ ı çalıştırmanız gerekiyor. Eğer başarılı bir dnvm upgrade işlemi yaptıysanız, dnx komutu sonucu yanda ekranı göreceksiniz.
  • dnx komutunu başarıyla gördüyseniz, “dnx ef” komutu için projenizin içerisine gitmelisiniz, project.json dosyasının olduğu dizine.
  • dnxef
  • İlgili dizine girince “dnx ef” komutuyla entity framework commant tool’u görmüş oluyoruz.
  • göreceğiniz üzere, database, dbcontext ve migrations komutları mevcut, biz dbcontext üreteceğimiz için aşağıda ki komutu çalıştırıyoruz;
  • dnx ef dbcontext scaffold "server=ServeName;database=DBNAME;user id=sa;password=PassWord" EntityFramework.MicrosoftSqlServer -a -c "DbContextName" -o Model

Komutu verdikten sonra ilgili model ve context’in projenizde üretildiğini göreceksiniz. EF 6 kullanıcıları için mapping’ler baya değişmiş gelicektir, artık Fluent Api’ye geçiş yapıyoruz, buyrun (https://ef.readthedocs.org/en/latest/modeling/index.html#fluent-api)

RC2 güncellemesiyle birlikte, “dnx” komutunun “dotnet” ile değişiceğinizde dipnıt olarak belirteyim.

Emrah.

java2net / Jar dosyayı c# projede kullanmak / IKVM

Farklı sebeplerden dolayı jar projeyi, c# projenizde yahut tam tersi olan c# projenizi java projeniz içerisinde kullanmak isteyebilirsiniz. En basit yöntemiyle jar projeyi c#’ta yeni process başlatarak kullanabilirsiniz. Fakat eğer kullanmak istediğiniz java projesi uygunsa, projeyi dll yada exe haline getirip kullanmak daha kolay ve yönetilebilir olacaktır.

IKVM  – java2net yada net2java için harika bir dönüştürücü.

Örnek olarak bir java projemiz olduğunu varsayalım, projenin çıktısı projemiz.jar olsun. ve projemizinde kütüphane bağımlılıkları olduğunu varsayalım, bunlarda “lib” klasörünün içerisinde abc.jar, cde.jar olsunlar. Varsaydığımız projemiz.jar dosyasını ikvm’nin binary versiyonu indirip (http://weblog.ikvm.net/),  java jdk yüklü makinanızda herhangi bir yere çıkartın, ikvm

 

ardından, jdk yüklü cihazınızda command promt açıp; “cd  ikvm-8.0.5449.1\bin” komutuyla ikvm path’ine geçiniz ve mecvut komut satırı artık ikvm çalıştırmaya hazır, bunu denemek için sadece ikvm yazıp, ikvm versiyonunu öğrenebilirsiniz.

Jar dosyasımızı dll yapmak için, projemiz.jar dosyasını ve bağımlılığı olan lib klasörünü ikvm bin klasörünün içerisine kopyalıyoruz. sonra dönüştürmek için gerekli komutları veriyoruz.

ikvmc -out:projemiz.dll -recurse:lib\*.jar projemiz.jar

-out : çıktımızın ismi,
-resource : bağımlılıklar, örnekte lib klasörünün altında ki tüm .jar dosyalarını eklemesini belirttim.

örnekte oluşturulacak .dll dosyasını release modda çıkaracaktır, eğer debug yapabilmek istersek;

ikvmc -debug -out:projemiz.dll -recurse:lib\*.jar projemiz.jar

şeklinde belirtmemiz yeterli olacaktır.

Oluşturduğumuz .dll yada exe çıktısını ise projemize referans olarak ekleyebilir ve ilgili nuget paketini yükleyerek kolayca kullanabiliriz. Nuget paketi şart değil, gerekli olan ikvm dll dosyalarını sizde ekleyebilirsiniz fakat nuget daha kolay olacaktır.

Ikvm nuget paketleri : http://www.nuget.org/packages/IKVM/

Yararlı olması dileğiyle.