29 Kasım 2013 Cuma

Visual Studio 2013 IntelliSense doesn’t work

Visual Studio 2013 IntelliSense Çalışmıyor! Ne yapmalısınız ?


Merhabalar,
Visual Studio 2013 çıktı ama bazı sorunları ile beraber çıktı. Bunlar insanı bazen deli ediyor.
En son yine böyle bir durumu IntelliSense de yaşadım ve nasıl çözülebileceğinin farklı yollarını  yazayım dedim.

Buyrunuz :)


İlk olarak menüden Tools > Options tıklıyoruz.
Karşımıza çıkan ekranda ise Text Editor > All Languages > General sekmesine geliyoruz
Statement completion altında yer alan "Auto list members" ve "Parameter information" kutucuklarının işaretlli olup olmadıklarını kontrol ediyoruz eğer işaretli değillerse işaretliyoruz.
İşte ekran görüntüsü;

Visual Studio 2013 TextEditor AllLanguages


Bende sorun düzelmedi ve aşağıdaki yöntemi uygulayarak devam ettim.

Şimdi ise Tools > Options tıklıyoruz.
Karşımıza çıkan yeni ekranda ise Text Editor > C# (Siz başka bir dili de seçebilirsiniz) > IntelliSense sekmesine geldiğimizde karşımıza aşağıdaki gibi bir ekran çıkıyor.

Text Editor > C# > IntelliSense

Ayarlarınız yukarıdaki gibi yapıp OK butonuna basıp Visual Studio 2013'ü kapatıp yeniden açtığınızda düzelmiş olması gerekiyor.

Ama eğer düzelmedi diyorsanız işte o zaman aşağıdaki yöntemi uygulama ile devam ediyoruz. Bilişim sektörünün olmazsa olmazı olan kapat aç düzelir yani namı değer RESET'i ayarlar için yapıyoruz.
Peki nasıl ?

Tools > Import and Export Settings...  tıklıyoruz. Karşımıza çıkan pencereden Reset all Settings seçip Next butonuna basıyoruz.

Tools > Import and Export Settings Wizard Step 1

Karşımıza aşağıdaki gibi bir ekran geliyor ve No, just reset settings, overwriting my current settings seçeneğini seçip Next butonuna basıyoruz.

Tools > Import and Export Settings Wizard Step 2

Karşımıza çıkan yeni pencerede hangi ayar setini kullanıyorusanız onu seçip sonrasında Finish butonuna basıyoruz. Benim varsayılan (Default) tercihim Visual C# olduğu için onu seçtim. Eğer sizdeki farklı ise kendi tercihinizi seçebilirsiniz mesala General gibi. Ekran görüntüsünü aşağıda bulabilirsiniz.

Tools > Import and Export Settings Wizard Step 3

Yaptıktan sonra bu aşamadaki son ekranımız ile karşılaşıyoruz. Visual Studio yaptığı işlemi bizimle paylaşıyor ama gördüğünüz üzere pekte başarılı olamamış.

Tools > Import and Export Settings Wizard Step 4

Close diyip kapatıyoruz pencereyi ama...

Olmadı neden ?
ReSharper kullandığım için acaba o mu sorun çıkarttı diye düşündüm ve Visual Studio 2013 'ü command line dan /safemode da çalıştırdım.

devenv.exe /safemode

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE>devenv.exe /safemode

Daha sonra yukarıdaki adımları tekrar uyguladım ve nihayet sıfırlama işlemi başarılı oldu ve işte mutlu son :))

Tools > Import and Export Settings Wizard Step 4 Success

Son kez Visual Studio 2013'ü tekrardan kapatıp açtığımda IntelliSense artık nihayet çalışıyor.

Ama sizde yine de çalışmadı ise o zaman birde şunları deneyin derim;

Visual Studio 2013 kapalı iken, bilgisayarınızda kullanıcı dosyalarının olduğu klasöre gidip Visual Studio'nun ayar dosyalarının olduğu dizini bulun;

C:\Users\cihan.dokur\AppData\Roaming\Microsoft\VisualStudio

gibi olmalı. Benim bilgisayarımdaki kullanıcı dosyaları aşağıdaki klasörde muhtemelen de sizde kullanıcı adı "cihan.dokur" yazan yerde kendi kullanıcı adınızın yazması dışında aynıdır.

İçinde 12.0(11.0 yada 10.0 da olabilir) gibi bir klasör olmalı bu klasörün adını değiştirip Visual Studio'yu yeniden açtığınızda Visual Studio 2013 en baştan ayarlarınızı yapmanızı isteyecektir sonrasında sorun düzelmiş olması gerekir.

Yinede düzelmedi ise çalıştığınız dosyanın projeden Exclude edilip edilmediğine bir bakmanızda fayda var. Exclude edildi ise Include etmeyi deneyin.

Bu sefer de düzelmedi ise Visual Studio üreticisi Microsoft'a güzel sözler söyleyip. Yeniden kurmanızı (ReInstall) öneririm :))

Umarım bu sorun ile karşılaşmazsınız ama karşılaşırsanız bakacağınız yer burası biliyorsunuz :)

Sevgiler,
Cihan.




22 Kasım 2013 Cuma

Entity Framework 6 güncellemesi nasıl yapılır ?

Bildiğiniz üzere yeni özellikleri ve yeni yapısı ile EntityFramework 6 yayınlandı.

Diyelim ki EntityFramework'ün önceki versiyonlarından yeni versiyonuna geçiş yapmak istiyorsunuz.
Peki nasıl geçiş yapacaksınız ?
İşte bu sorunun cevabını aşağıda anlatmaya çalıştım :)


Başlamadan önce;
  • Bu güncellemeyi Visual Studio 2012 ve 2013 versiyonlarında c# programlama dili için yapacağız.
  • Projenizin yedeğini ise almayı lütfen unutmayın. ( Microsoft bu bazen süprizler yapabilir :)  )
yukarıdaki durumlar tamam ise devam edelim.

Başlıyoruz;

İlk olarak Entity Framework 6'yı kurmamız gerekiyor.

Bunu yapmanın iki yolu var bunlar;

1 -) Projenizin References (referansları) üzerinde sağ tıklayıp  Manage Nuget References 'a tıklayın. Açılan ekranda arama kutusuna "EntityFramework" yazdığınızda aşağıdaki gibi bir ekran ile karşılacaksınız, seçiminizi yapıp "Install"  butonuna bastığınızda kurulum ekranı çıkacak ve dosyaları internet den indirip sizden bir  "I Accept" (kabul ediyorum) onayı isteyecek. Sonrasında ise kurulumunuz tamamlanmış olacak.
Manage Nuget Packages


2 -) Paket yöneticisi konsolundan aşağıdaki komutu yazarak da kurulumu yapabilirsiniz.

PM> Install-Package EntityFramework


Kurma işlemimiz tamamlandı. Şimdi ise bütün projelerinizdeki System.Data.Entity referansını(Reference) silmeniz gerekiyor. Aslında Nuget paket yöneticisi bunu sizin yerinize otomatik olarak yapıyor ama siz yinede emin olmak için şöyle bir baksanız fena olmaz hani :)

Devam edelim;

Edmx dosyasının altında bulunan önceki versiyona ait edmx_dosya_adi.tt ve edmx_dosya_adi.Context.tt dosyalarını siliyoruz.
Aşağıdaki örnek ekran görüntüsündeki sarı ile işaretlenmiş BlogData.tt (altındaki tüm dosyalar dahil) ve BlogData.Content.tt dosyalarını siliyoruz.

Solution Explorer Edmx Silme


Sonrasında .edmx (Bir üst resimdeki BlogData.edmx gibi) dosyasını çift tıklayıp açıyoruz. Açtığınız da bazen boş olduğunu ve entity'lerin olmadığını görebilirsiniz.
Sakin olun kaybolan giden birşey yok:) birazdan gelecekler :)

Entity Framework 6.0 Add Code Generation Item

Dosya üzerinde sağ tuşa bastığınızda yukarıdaki gibi bir menü ile karşılacaksınız. "Add Code Generation Item..." tıklayın.


Karşımıza yukarıdaki ekran görüntüsü geliyor. Soldaki Data sekmesini seçtikten sonra sağdan EF 6.x DbContext Generator seçiyoruz. Name kısmına bu örnekte "BlogData.tt" yazıyoruz ama siz isterseniz başka isimde verebilirsiniz örneğin Model1.tt gibi. Sonrasında "Add" butonuna basıyoruz. Az önce sildiğimiz iki dosyanın EntityFramework 6.0 olarak yeniden oluşturulmasını sağlıyoruz. Dosyaları Solution Explorer'dan da görebilirsiniz.

Böylelikle edmx dosyamızı güncellemiş olduk. Dosyayı kapatıp tekrar açtığınızda entity'lerin geri geldiğini göreceksiniz ama henüz yapacaklarımız bitmedi.

Son olarak;
EF 6.0 ile birlikte gelen yeni yapı nedeniyle bazı objelerin NameSpace'leri değişti bu nedenle bazı "using" kullanımlarınızı güncellemeniz gerekiyor.

System.Data altında yer alan nesneler System.Data.Entity.Core altına taşınmış genel olarak Entity.Core'u eklemeniz yeterli.

Örneğin;
Önceki yeri : System.Data.Objects.ObjectContext
Yeni Yeri    : System.Data.Entity.Core.Objects.ObjectContext

Ayrıca aşağıdaki değişiklikleride yapmanız gerekebilir, benim projemde gerekti :)
  • System.Data.EntityState -> System.Data.Entity.EntityState
  • System.Data.Objects.DataClasses.EdmFunctionAttribute -> System.Data.Entity.DbFunctionAttribute
  • System.Data.Objects.EntityFunctions -> System.Data.Entity.DbFunctions
  • System.Data.Spatial -> System.Data.Entity.Spatial

Umarım anlatabilmişimdir.

Sevgiler,
Cihan.


Kaynak : http://msdn.microsoft.com/en-us/data/upgradeef6