Bu bölümde Visual Studio’nun program geliştirme ortamı hakkında kısaca bilgi verilecektir. Daha önce Visual Studio’nun herhangi bir sürümünü kullandıysanız bu bölümü atlamak isteyebilirsiniz. Bu bölüme en azından göz gezdirmenizi önermek isteriz. Çünkü bu bölümde ileride işlenecek bazı konulara temel oluşturan birkaç ayrıntıdan söz edilmektedir. Aslında C# programlama dilinden bağımsız olarak Visual Studio hakkında yüzlerce sayfa yazılabilir. Ne ki bu kitabın böyle amacı yoktur. Bu kitabın amacı C# programlama dilini ve .NET Framework ile gelen sınıfları anlatmak olduğu için Visual Studio hakkında kısa bir özet yapılmakla yetinildi.
C# uygulamaları geliştirmek için bilgisayarınızda .NET Framework’ün kurulu olması yeterlidir. Çünkü .NET Framework ile birlikte C#, Visual Basic ve C++ derleyicileri zaten geliyor. Hemen eklemek gerekirse; .NET Framework ücretsiz dağıtılmakta ve Windows Vista ile birlikte gelmektedir. Kullandığınız bilgisayara Windows XP kurulu ise microsoft.com’dan istediğiniz .NET Framework sürümünü indirip kurabilirsiniz.
Birkaç yıl öncesine kadar .NET Framework 1.1 vardı. Sonra 2005 yılının başında .NET Framework 2.0 dağıtıldı. Yakın bir zamanda ise .NET Framework’ün 3.5 sürümü piyasaya verildi. Microsoft, önceleri .NET Framework 2.0’a bazı araçlar ekleyip hepsine birden 3.0 dedi. Sonrasında ise .NET Framework 3.5 hazırlandı. Başka bir deyişle C# programcısı için .NET 2.0 ve .NET 3.0 arasında fark yoktur.
Bilgisayarınıza .NET Framework’ü kurduktan sonra Not Defteri ile C# kodunuzu yazıp CS uzantısı ile kaydedip DOS penceresine geçip .NET Framework ile gelen C# derleyicisi(CSC.EXE) ile derleme yapıp EXE dosyayı hazırlayabilirsiniz. C# derleyicisi ile hazırlanan EXE dosya tek başına çalışabilen(yani .NET Framework olmadan) Windows uyumlu bir EXE değildir. Visual Studio veya DOS penceresinde derleme yaparak hazırladığınız EXE dosyayı çalıştırmak üzere çift tıkladığınızda geri planda devreye giren CLR yani Common Language Runtime tarafından çalışması sağlanır.
Çok sayıda dosyadan meydana gelebilen C# uygulamalarını Not Defteri gibi kısıtlı özelliklere sahip bir editörle yazmak imkansız olmasa bile zahmetlidir. Bu kitabın içeriğini hazırlarken genellikle Visual Studio 2008’i kullandık. Kullandığınız bilgisayarda Visual Studio 2005 kuruluysa bu kitapta anlatılanları zorluk çekmeden izleyebilir, verilen örnekleri deneyebilirsiniz. Tabii bu durumda C# 3.0 ile gelen birkaç yeniliğe kayıtsız kalmanız gerekir. C# 3.0 ile gelen yeniliklerin neredeyse tamamı LINQ ile ilgilidir. LINQ oldukça geniş kapsamlı bir konu olduğu için bu kitapta temel özelliklerinden söz edilmekle yetinildi.
Visual Studio uygulama geliştirmeyi kolaylaştıran ücretli bir program geliştirme aracıdır, bir IDE’dir. Microsoft firması korsan kullanımı azaltmak ve C#’ı henüz öğrenenleri düşünerek Express Edition adı verilen kısıtlı özelliklere sahip IDE’ler hazırlayıp dağıtmaya başladı. Visual Studio ile C#, Visual Basic, C++ veya ASP.NET uygulamalarını geliştirmek mümkün iken Express Edition’lar dile özeldir. .Yani NET uyumlu hangi programlama dilini kullanmak istiyorsanız veya hangi dilde uygulama geliştirmek istiyorsanız o dil için hazırlanmış Express Edition adı verilen IDE’yi yani program geliştirme aracını microsoft.com’dan indirip kurmanız gerekir. Bana sorarsınız tercihiniz Visual Studio olsun. Ancak Visual Studio’yu edinemezseniz de bunu sorun yapmayıp C# için hazırlanmış Express Edition ile çalışabilirsiniz.
Visual Studio kurulup başlatıldığında ekrana aşağıda verilen diyalog kutusu getirilerek program geliştirme ortamının düzenlenmesi konusunda seçim yapmanız istenir. C# programları geliştirmek istediğimiz için bu diyalog kutusunda Visual C#’ı seçtik. Bu seçim sayesinde Visual Studio’nun ortamı C#’ın varsayılan seçimlerine göre ayarlanır.

Bu diyalog kutusunda Visual C#’ı seçtiğinizi varsayalım. Bir süre sonra Visual Basic’in ayarlarına dönmek isterseniz Tools menüsünden Import and Export komutu verildiği zaman ekrana gelen diyalog kutusunda Reset all Settings radyo düğmesini seçip ortamın hangi dilin varsayılan ayarlarına göre düzenleneceği konusunda seçim yapılan bu diyalog kutusunu tekrar ekrana getirebilirsiniz.
Visual Basic’in varsayılan ayarları ile Visual C#’ın ayarları arasındaki önemli farklardan birisi şudur: Visual Basic ayarları geçerli iken Visual Studio sizi hazırladığınız projeyi hemen kaydetmek zorunda bırakmıyor. Tabii bu diyalog kutusunda hangi dilin varsayılan ayarlarını seçerseniz seçin sonradan Tools menüsünden Options komutu ile ekrana getirilen pencerede ortam ayarlarında istediğiniz değişikliği yapabilirsiniz.
Visual Studio çalıştırıldığında yeni proje hazırlayabilmeniz veya mevcut projeleri açabilmeniz için Start Page ekrana getirilmektedir. Bu sayfadaki Recent Projects kutusunda Open adı altında gruplanan seçenekler ile mevcut projeleri açabilirsiniz. Create adı altında gruplanan 2 seçenekten yararlanıp yeni proje hazırlayabilirsiniz.
Mevcut projelerden birisini açmak istiyorsanız Open adı altında gruplanan seçeneklerden Project’i tıklamanız gerekir. Project seçeneğini tıklarsanız geçerli kullanıcıya ait “Belgelerim” klasörünün altında yer alan Visual Studio Projects klasöründeki projeler listelenir. Visual Studio ile hazırlanan her proje için ayrı bir klasör hazırlanmakta ve projeye ait dosyalar bu klasöre kaydedilmektedir. Çünkü her projede aynı ada sahip dosyalar bulunmaktadır.

Visual Studio ile C# projesi hazırlamak üzere Start Page’deki Create adı altında gruplanan 2 seçenekten Project’i tıklarsanız ekrana New Project diyalog kutusu gelir. Project types kutusunda listelenen seçenekler, Visual Studio’nun bilgisayara kurulan bileşenlerine göre değişmektedir. Visual C# projesi hazırlamak istediğimiz için Project types kutusunda Visual C# ve Templates kutusunda Windows Foms Application şablonunu seçtik.
Tam bu noktada bazen kafaların karışmasına neden olan Visual C# ile C# ayrımına değinmek gerekiyor. Visual C#, Microsoft firmasının ticari markasıdır. Madem C# programlama dilini Microsoft firması geliştirdi ve bu kitapta Microsoft firması tarafından geliştirilen Visual Studio’dan yararlanıyoruz C# ile Visual C# aynı anlamda kullanılabilir.
C# uygulamalarını geliştirirken Visual Studio yerine C# için hazırlanmış Express Edition’ı kullanıyor olsaydık New Project diyalog kutusunda daha az şablon listelenirdi. Aşağıda verilen ekran görüntüsü C# için Express Edition’a aittir.

Visual Studio 2003 veya 2005 ile C# projesi hazırlanmak istendiği zaman ekrana getirilen diyalog kutusunda .NET Framework sürümünü tercih etme imkanı yoktu. Visual Studio 2003 ile .NET Framework 1.1 uyumlu projeler hazırlanabilirken Visual Studio 2005 ile .NET 2.0 uyumlu projeler hazırlanabiliniyordu. Visual Studio 2008’de ise proje hazırlarken .NET Framework’ün 2.0, 3.0 veya 3.5 sürümlerinden birisini seçme imkanınız bulunmaktadır. New Project diyalog kutusunda seçilen .NET Framework sürümüne göre Templates liste kutusunda listelenen şablonlar değişmektedir.
Başlangıçta projeler için((yani eğitim amaçlı projelerde) .NET Framework’ün 2.0 veya 3.5 sürümünü seçmenin bir önemi olmamasına rağmen 3.5 sürümünü tercih ettik. New Project diyalog kutusunda .NET Framework’ün 2.0 sürümünü tercih ederseniz C# 3.0 ile ilgili bazı yeniliklerden yararlanamazsınız. Örneğin LINQ teknolojisi ile sorgulama yapamazsınız. New Project diyalog kutusunun alt kısmında Name seçeneğinden yararlanarak projenin adını girebilir ve Location seçeneği ile projenin kaydedileceği klasörü belirleyebilirsiniz.
Visual Studio ile hazırlanan C# projelerinin geçerli kullanıcıya ait Belgelerim klasörünün altında bulunan Visual Studio Projects klasörüne kaydedileceği varsayılmaktadır. Hazırlamak istediğimiz projeyi “C:” sürücüsündeki “\Projeler” klasörüne kaydetmek için Browse düğmesini tıklayıp klasör seçilen Project Location diyalog kutusunu ekrana getirip bu klasörü seçtik.

Yukarıda anlatılan şekilde proje hazırladığınızda Visual Studio ayrıca bir Solution hazırlamaktadır. Solution’lar proje grubu gibi işlev görmektedir. Başlangıçta projenin adı aynı zamanda Solution adı olarak kullanılmaktadır. Solution’a birden fazla proje dahil edeceksiniz farklı bir ad vermeniz önerilir. Proje hazırlanırken Visual Studio tarafından oluşturulan klasörleri gösterebilmek için Solution’a farklı bir ad verdik. Bu ayarlamalardan sonra New Project diyalog kutusunu OK düğmesiyle kapatırsanız Visual Studio projeyi hazırlar ve aşağıdaki gibi bir Visual Studio penceresi ile karşılaşırsınız.

Başlangıçta Solution Explorer ve Properties pencereleri Visual Studio penceresinin sağ tarafına yuvalanmış durumdadır. Sol tarafta ise Toolbox gizlenmiş durumdadır. Bu ekran görüntüsü Visual Studio bilgisayara kurulduktan hemen sonra alındığı için sizin bilgisayarda Visual Studio ile ilgili pencerelerin yerleşim şekli farklı olabilir. Proje hazırlanırken belirtilen klasörün altında proje ile aynı ada sahip bir klasör hazırlanıyor. Buna göre her Visual C# projesi için ayrı bir klasör hazırlanmaktadır. Proje için hazırlanan klasör ve dosyaları aşağıda görebilirsiniz.

Bu ekran görüntüsünde Solution için hazırlanan klasörün içinde proje ile aynı ada sahip bir klasörün hazırlandığını görebilirsiniz. Solution birden fazla projeden meydana gelmeyecekse Solution ile projeye ait dosyaların bir arada olmasını tercih edebilirsiniz. Solution için ayrı bir klasörün hazırlanmasını istemiyorsanız New Project diyalog kutusundaki Create directory for solution onay kutusunu pasif duruma getirmelisiniz.
Projeye ait klasöre kaydedilen “Form1.cs” uzantılı dosya projedeki formu temsil etmektedir. Formların görsel yapısı ile ilgili bilgiler Designer.cs dosyalarında tutulurken “resx” uzantılı dosyalarda ise formla ilgili kaynaklar(resource) tutulmaktadır. Visual Studio tarafından hazırlanan C# projesi dosyalarına “csproj” uzantısı verilmektedir. Visual Studio ile proje hazırladığınızda aynı zamanda bir Solution hazırlanır ve Solution’a ait bilgiler “sln” dosyalarında saklanmaktadır. Daha önce hazırlamış olduğunuz projedeki bir kod dosyasında değişiklik yapmak istiyorsanız bütün projeyi açmak zorunda değilsiniz. File menüsünden Open File komutunu verip ilgilendiğiniz dosyayı açabilirsiniz.
Solution Explorer Penceresi
Üzerinde çalıştığınız projeye hangi formların ve dosyaların dahil edilmiş olduğunu görmek istiyorsanız Visual Studio’nun Solution Explorer penceresine bakabilirsiniz. Solution Explorer penceresinde bir bakıma projeye ait klasörün içeriği görüntülenmektedir. Solution Explorer penceresinin başlık çubuğunu çift tıklayıp bağımsız pencere olmasını sağlayabilirsiniz. Aşağıda verilen ekran görüntüsünü proje için 2. bir form hazırladıktan sonra aldık. Projeye 2. bir form dahil etmek demek gerçekte .NET Framework ile gelen Form sınıfının mirasçısı bir sınıf hazırlamak demektir.

Solution ve proje hakkında bilgi içeren bu pencereyi View menüsünden komut vererek veya Standard araç çubuğundaki ilgili düğmeyi tıklayarak ekrana getirebilirsiniz. Bu ekran görüntüsü alındığı sırada Proje1 adını verdiğim projede Form1 ve Form2 adında 2 form vardı. Visual Studio ile hazırlanan projelerde her form için ikisi CS uzantılı 3 dosya hazırlanmaktadır. Bu konunun ayrıntılarından daha sonra söz edilecektir.
Windows Forms Applicationşablonu ile hazırlanan projenin kaydedildiği klasöre bakıldığında Bin ve Obj adında 2 klasörün hazırlandığı görülür. Visual Studio başlangıçta bu 2 klasörü Solution Explorer penceresinde listelemiyor. Üzerinde çalıştığınız proje ile ilgili bütün dosya ve klasörlerin listelenmesini istiyorsanız Solution Explorer penceresindeki Show All Files düğmesini tıklamanız gerekir. Bu düğmenin işlevini aşağıda görebilirsiniz.

C# projesine dahil edilmiş referansları görmek istiyorsanız Solution Explorer penceresinde References seçeneğini tıklamalısınız. Visual Studio 2008 ile hazırlanan C# projelerine 8 referans otomatik olarak dahil edilmektedir. Ek bir işlem yapmaya gerek kalmadan bu referanslarda bulunan namepace’lerdeki sınıfları kullanabilirsiniz. DLL dosyaları veya buradaki adıyla referanslar doğaları gereği gerek duyulduğunda belleğe yüklenirler.
.NET Framework ile gelen veya kendi hazırladığınız referanslardan birisini projenize dahil edecekseniz References seçeneğine ait kısayol menüsünden Add Reference komutunu vermelisiniz. Bu komutu verirseniz ekrana Add Reference diyalog kutusu gelir. Projede kullanmak istediğiniz bileşen veya referansı seçip OK düğmesini tıklamanız yeterlidir.

Bu pencerede .NET sekmesinde listelenen her seçenek veya referans gerçekte .NET Framework ile gelen birer DLL dosyasıdır. Kendiniz Visual Studio ile gelen Class Library şablonu ile kolayca DLL dosyaları hazırlayıp bunlardan .NET Framework ile gelenlerde oluğu gibi yararlanabilirsiniz.
Form Designer ve Code Editor Pencereleri
Şimdiye kadar verilen ekran görüntülerinden tespit olabileceğiniz gibi yeni bir proje hazırlandığınızda projeye otomatik olarak dahil edilen formun görsel yapısı Visual Studio penceresinin Form Designer adı verilen orta kısımda görüntülenmektedir. Aşağıda verilen ekran görüntüsü alındığı sırada projedeki ilk formun görsel yapısı görüntüleniyordu.
Açık olan her form veya kod dosyası için Windows Form Designer penceresinin üst kısmında bir sekme hazırlanmaktadır. Bu sırada Solution Explorer penceresinde Form2.cs’nin üzerinde çift tıklama yaparsanız bu kod dosyası dahilinde hazırlanan Class’ın yani formun görsel yapısı görüntülenir. Açık olan formlardan birisine ait kodları görmek istiyorsanız o formu seçip View menüsünden Code komutunu vermelisiniz. Form2 aktif form iken View menüsünden Code komutu verilirse bu formu oluşturan kodlar görüntülenir. Aşağıda verilen ekran görüntüsünü almadan önce Solution Explorer ve Properties pencerelerini gizledik. Bu kodu yakından incelediğinizde “Form2” adında ve .NET Framework ile gelen Form sınıfının mirasçısı bir Class’ın hazırlandığını görürsünüz. Bu konunun ayrıntılarından daha sonra söz edilecektir.
Projedeki 2. formu temsil eden Form2 sınıfına ait kodların bir kısmı bu dosyada iken diğer yarısı “Form2.Designer.cs” dosyasında bulunmaktadır. Projedeki mevcut kod dosyalarını açmak için Solution Explorer penceresine başvurmak yerine File menüsünden Open-File komutunu verebilirsiniz.
Kod yapısı görüntülenen formun görsel yapısını görmek istiyorsanız View menüsünden Designer komutunu vermelisiniz. Projedeki formlara ait kodları veya görsel yapılarını görüntülerken Solution Explorer penceresinden yararlanabilirsiniz. Söz konusu forma ait kısayol menüsünden View Designer komutunu verirseniz formun görsel yapısı, View Code komutunu verirseniz forma ait kodlar görüntülenir.
ToolBox Penceresi
Visual Studio bilgisayara kurulup başlatıldığında ekrana getirilen bir diğer pencere Toolbox penceresidir. Toolbox’ta formların üzerine yerleştirebileceğiniz kontroller listelenmektedir. Visual Studio penceresinin sol tarafında Toolbox’tan başka ayrıca Server Explorer penceresini temsil eden bir düğme bulunmaktadır.
Bu ekran görüntüsü alındığı sırada Server Explorer penceresi açık olmasına rağmen gizlenmişti. Bu pencereden veritabanı işlemleri yapılırken yararlanılmaktadır. Bu kitapta veritabanı işlemlerinden söz edilmediği için Server Explorer penceresini kapattık.

Toolbox’ın otomatik gizlenme özelliğini iptal etmek istiyorsanız Auto Hide düğmesini tıklamalısınız. Auto Hide özelliği devrede değilken Toolbox penceresinin başlık çubuğunda çift tıklama yapıp bağımsız pencere olmasını sağlayabilirsiniz.

.NET Framework ile birlikte Toolbox’ta birer düğme ile temsil edilenlerden çok daha fazla kontrol verilmektedir. Üzerinde çalıştığınız forma yerleştirmek istediğiniz kontrol Toolbox’ta yer almıyorsa Tools menüsünden Choose Toolbox Items veya Toolbox’a ait kısayol menüsünden Choose Items komutunu verebilirsiniz. Örneğin SQL Server veya Access veritabanlarına bağlanırken kullanılan SqlConnection ve OleDbConnection kontrolleri başlangıçta Toolbox’ta yer almıyor. Bu kontrollere gerek duyanların Toolbox’a ait kısayol menüsünden komut verip ekrana gelen diyalog kutusunda ayarlama yapmaları gerekir.
Toolbox’ta listelenen kontrollerin birisini seçip forma yerleştirmek demek gerçekte söz konusu kontrolün yani Class’ın örneğini almak olarak düşünmek gerek. Forma yerleştirilen kontrol söz konusu Class’ın yani formun bir üyesi olur.
Projelerinin Bileşenleri
Visual Studio ile geliştirilen uygulamalara Solution adı verilmekte ve Solution’larda projeler bulunmaktadır. Üzerinde çalıştığınız Solution hakkında bilgi edinmek istiyorsanız Solution Explorer penceresine bakabilirsiniz. Madem C# uygulamalarını geliştirirken Visual Studio veya Express Edition kullanıyoruz Visual Studio’nun hazırladığı projeler hakkında bilgi edinmek gerekir.
Visual Studio ile hazırlanan C# projelerinde formlardan ve formları temsil eden kod dosyalarından başka “Program.cs” adında bir kod dosyası bulunmaktadır. Visual Studio veya Express Edition ile hazırlanan C# projeleri çalışmaya bu dosyadan başlamaktadır. Çünkü C# projelerinin başlangıç noktası olan Main() metodu bu kod dosyasında bulunmaktadır. Daha sonra bu dosyanın işlevi hakkında bilgi verilecektir. “Program.cs” dosyası Visual Studio 2003’te yoktu. Bu dosyanın en önemli işlevi Main() metodunu içermesidir. Main() metodunu alıp başka bir kod dosyasına yerleştirirseniz Program.cs dosyasına gerek kalmaz.

C# projeleri Main() metoduna sahip olmak zorundadır. Çünkü C# projeleri tıpkı C ve C++ projelerinde olduğu gibi Main() metodundan itibaren çalışmaya başlarlar. Ayrıca Main() metodu public ve static olmalıdır. Bu örnekte Main() metodu geriye bir değer göndermediği için void olduğu işaret edildi.
C# projelerinin ikinci önemli bileşenleri formlar ve formlarla ilgili kod dosyalarıdır. Visual Studio, projelere dahil edilen her form için 3 ayrı dosya hazırlamaktadır. Asıl kod dosyaları yani programcının yazdığı kodlar form ile aynı ada sahip CS uzantılı dosyada saklanmaktadır. Formun görsel yapısı ile ilgili bilgiler ise “Designer.cs” dosyasında tutulmaktadır.

Visual Studio, formlara ait Designer.cs dosyasındaki kodları bir bakıma tasarım anında yorumlayıp söz konusu form çalışma anında ekrana geldiğinde nasıl bir görünüme sahip olacağı konusunda programcıyı önceden bilgilendirmektedir.
Formun üzerine nesne yerleştirilmesi veya formun özelliklerinde değişiklik yapılması halinde Visual Studio tarafından “Designer.cs” dosyasında değişiklik yapılır. Başka bir deyişle formların ve formalara yerleştirilen nesnelerin görsel özellikleriyle ilgili satırlar “FormAdı.Designer.cs” dosyasında bulunmaktadır. Tabii bu C# derleyicisi için şart değildir. Çünkü bu ayrım Visual Studio’nun tercihidir. Daha sonra xxxDesigner.cs dosyasının içeriği hakkında bilgi verilecektir.
Projelerdeki her form için “cs”” ve “resx” uzantılı 3 dosya hazırlanmaktadır. Not Defteri ile CS uzantılı dosyaları açıp inceleyebilir veya değiştirebilirsiniz. Aşağıda verilen ekran görüntüsünü Form1’e ait CS dosyasını Not Defteri ile açtıktan sonra aldık.

Form nesnelerini veya .NET Framework ile gelen Form sınıfının mirasçısı sınıfları kendiniz kod yazarak hazırlayabilirsiniz ancak bu durumda Visual Studio penceresi içinde tasarım anında formları görsel yapısının görüntülenmesinde sorunlar yaşanır.
C# projeleri hard diske “csproj” uzantısı ile kaydedilmektedir. “csproj” uzantılı proje dosyalarında projedeki form ve class’lar hakkında bilgi bulunmaktadır. “csproj” uzantılı dosyanın içeriğine bakıp projede kaç form ve class’ın olduğunu öğrenebilirsiniz.
İleri ki sayfalarda değinileceği gibi Visual Studio ile yeni bir proje hazırlandığı zaman ayrıca “sln” uzantılı bir Solution dosyası hazırlanıyor. Visual Studio ile hazırlanan C# projelerinde yukarıda sözü edilen dosyalara ek olarak Properties adı altında gruplanan 5 dosya daha bulunmaktadır. Bu 5 dosya sayesinde projenin özellikleri ayarlanmaktadır. Örneğin uygulama dahilinde kullanılan resim dosyaları Resources.resx dosyasına dahil edilebilmektedir. Bu 5 dosyanın işlevi hakkında daha sonra bilgi verilecektir. Bu 5 dosya projeye ait klasörün içinde Properties klasöründe saklanmaktadır.

Üzerinde çalıştığınız projenin başka bilgisayarlarda kullanılmak veya çalıştırılmak üzere alınan/götürülen dosyaların hepsine birden Assembly denilmektedir. Assembly tek exe dosyadan meydana gelebileceği gibi çok sayıda resim, text vb. dosyasından da oluşabilir. Assembly hakkındaki bilgiler Properties klasöründe tutulan AssemblyInfo.cs dosyasında tutulmaktadır. Bu dosyanın içeriği Project Properties penceresinden ulaşılan Assembly Information diyalog kutusunda yapılan ayarlardan etkilenmektedir. Assembly’ler hakkında daha sonra bilgi verilecektir.
Yukarıdaki sayfalarda ekran görüntüsü verilen New Project diyalog kutusunda değişik amaçlar için kullanabileceğiniz çok sayıda şablon listelenmektedir. Bu kitapta bu şablonların birkaçından söz edilecektir. Örneğin Empty Project şablonu herhangi bir forma ve “Program.cs” dosyasına sahip olmayan bir proje hazırlamaktadır.
Visual Studio veya Express Edition ile hazırlanan projeler hakkında bilgi sahibi olmanız için New Project diyalog kutusunu ekrana getirip Empty Project şablonu ile bir proje hazırlayıp kaydettik. Aşağıda verilen ekran görüntüsünden tespit edeceğiniz gibi Solution Explorer penceresinde herhangi bir klasör veya dosya listelenmiyor.

Bu şartlarda projenin kaydedildiği klasöre bakacak olursanız sadece Solution ve Proje dosyalarının hazırlandığını görebilirsiniz. Daha sonra bu proje için Main() metodunu içeren Program.cs dosyasını ve başlangıç formunu hazırlayabilirsiniz.
Solution Hazırlamak
Yukarıdaki sayfalarda Solution Explorer penceresiyle ilgili olarak verilen bazı ekran görüntülerinde Solution varken bazılarında yoktu. Üzerinde çalıştığınız Solution tek projeden meydana geliyorsa Solution Explorer penceresinde Solution adının yer almasına gerek duymayabilirsiniz. Bu durumda Tools menüsündeki Options komutu ile ekrana getirilen diyalog kutusunda Project and Solutions seçenek grubunda ayarlama yapmalısınız.
Yukarıda belirtildiği gibi Visual Studio ile yeni bir proje hazırladığınızda ayrıca bir Solution hazırlanmaktadır. Bu konuda adım adım bilgi vermek için Visual Studio’nun File menüsünden komut verip New Project diyalog kutusunu ekrana getirdik.

Visual Studio, projeye verilen adı aynı zamanda Solution adı olarak kullanmaktadır. Karışıklık olmasın diye proje adı ile Solution adının farklı olmasını sağladık. Bu şartlarda OK düğmesi tıklanırsa kullanılan bilgisayardaki “C:\Projeler” klasöründe “Solution1” adında bir klasör hazırlanıp solution’a ait SLN uzantılı dosya bu klasöre konulur. Ayrıca bu klasörün içinde proje için “WindowsApplication1” adında bir klasör hazırlanıp projeye ait dosya ve diğer klasörler bu klasörün içine konulur.
Bildiğiniz gibi New Project diyalog kutusundaki Create directory for solution onay kutusu seçili değilken solution için ayrı bir klasör hazırlanmayıp proje ve solution dosyaları bir arada tutulmaktadır. Tekrar etmek gerekirse Visual Studio ile bir C# projesi hazırladığınızda otomatik olarak SLN uzantılı bir solution dosyası hazırlanmaktadır. Solution’lar projeleri gruplamaya yaradıkları için geliştirdiğiniz uygulama birden fazla projeden meydana gelmeyecekse SLN uzantılı Solution dosyasını unutabilirsiniz.

Otomatik olarak hazırlanan Solution’u görmek istiyorsanız Solution Explorer penceresine bakabilirsiniz. Birden fazla proje söz konusu olmadığı sürece otomatik olarak hazırlanan Solution işlevsel değildir. Başka bir deyişle aynı anda birden fazla projeyi açmayı düşünmüyorsanız Solution’larla ilgilenmenize gerek yoktur.
Visual Studio tarafından hazırlanan Solution’a ait kısayol menüsündeki New Project komutu ile yeni bir projeyi veya Existing Project komutu ile mevcut projelerden birisini Solution’a dahil edebilirsiniz. Kısayol menüsünden New Project komutunu verirseniz ekrana Add New Project diyalog kutusu gelir.
Tahmin edebileceğiniz gibi Solution’larda .Net destekli ve Microsoft ürünü herhangi bir programlama dili ile hazırlanmış başka projeler olabilmektedir. Konumuz C# olduğu için Project Types kutusunda Visual C# Projects ve Templates liste kutusunda ise Windows Application’i seçip OK düğmesini tıklayınca Solution Explorer penceresi aşağıda verilen şekle dönüştü.

Solution’da birden fazla proje varken bu projelerden birisi aktif projedir. Aktif projenin adı Solution Explorer penceresinde kalın olarak yazılmaktadır. Yanda verilen ekran görüntüsünü aldığımız sırada “WindowsApplication1” adlı proje aktifti. Diğer projeyi aktif proje yapmak istiyorsanız o projeye ait kısayol menüsünden Set as StartUp Project komutunu vermelisiniz. Solution’daki projelerden birisini çıkarmak istiyorsanız o projeye ait kısayol menüsünden Remove komutunu verebilirsiniz.
Yukarıda otomatik olarak hazırlanan Solution’a sonradan 2. bir projeyi dahil ettik. Ancak işe boş bir Solution hazırlamakla başlayabilirsiniz. İçeriği boş solution hazırlamak istiyorsanız New Project diyalog kutusundaki Blank Solution şablonundan yararlanabilirsiniz.
Herhangi bir proje içermeyen yeni bir Solution hazırlamak için Project Types liste kutusunda Visual Studio Solutions ve Templates kutusunda ise Blank Solution şablonunu seçip solution için klasör seçip OK düğmesini tıklarsanız aşağıdaki gibi Visual Studio penceresi ile karşılaşırsınız. Bu sırada Solution’a dahil edilmiş olan herhangi bir proje olmadığı için Solution Explorer penceresinde yalnızca Solution adı listelenir.

Bu sırada mevcut projelerden birisini Solution’a dahil edebilir veya Solution için yeni bir proje hazırlayabilirsiniz. Bu işlemler için Solution Explorer penceresinde Solution’a ait kısayol menüsünden New Project veya Existing Project komutlarından birisini verebilirsiniz. Herhangi bir zamanda SLN uzantılı Solution dosyasını açmanız halinde Solution’a dahil edilmiş olan bütün projeler açılır.
Projeleri Çalıştırmak Ve Derlemek
Şimdi sırada yukarıdaki sayfalarda anlatılan şekilde hazırlanan projeleri çalıştırmak, test etmek ve derlemek var. Bu düşünce ile New Project diyalog kutusunu ekrana getirip Windows Forms Application şablonu ile “Proje1” adında bir proje hazırlayıp bu projeyi “C:” sürücüsünde “\Proje1” klasörüne kaydettik. Projeyi kaydettiğimiz klasörü özellikle işaret ettik. Çünkü proje çalıştırıldığında veya derlendiğinde geri planda Visual Studio tarafından hazırlanan dosyalardan söz etmek istiyoruz.
Ayrıca New Project diyalog kutusunda Create directory for solution onay kutusu pasif duruma getirip proje hazırlanırken otomatik olarak hazırlanan Solution’la ilgili dosyanın ayrı bir klasöre konulmasını engelledik. Program geliştirme aracı yani IDE olarak Visual Studio yerine C# için hazırlanmış Express Edition’ı kullananlar için şunu söylemek isterim: Projeleri çalıştırmak bağlamında Visual Studio ile Express Edition birbirinden farklı değildir.
Şimdi hazırladığımız projede herhangi bir değişiklik yapmadan, başlangıç formuna kontrol yerleştirmeden ve başka bir Class hazırlamadan çalıştıracağız. Projeleri çalıştırmak, başka bir deyişle projeyi test edip hata içerip içermediğini kontrol etmek için genellikle Debug menüsündeki Start Debugging komutu kullanılmaktadır. Genellikle dedim; çünkü projeleri çalıştırmanın başka yöntemleri de vardır.
Çalışır durumdaki projeye ait ilk formu Kapat düğmesi ile kapatıp projenin çalışmasını sona erdirip tasarım moduna geçebilirsiniz. Projenin çalışmasını sona erdirip Design moduna geçilirse Visual Studio’nun Toolbox ve Properties gibi pencereleri tekrar görüntülenir.
Visual Studio ile hazırlanan C# projeleri Debug menüsünden komut verilerek çalıştırıldıkları, başka bir deyişle test edildikleri zaman Visual Studio tarafından otomatik olarak EXE dosya hazırlanmaktadır. Proje çalıştırıldığında hazırlanan EXE dosyanın yerini aşağıda görebilirsiniz. Bu EXE dosya ancak proje hazırlanırken tercih edilen .NET Framework sürümünün(2.0, 3.0 veya 3.5) kurulu olduğu bilgisayarda çalışabilir. Aşağıda ekran görüntüsü verilen dosya listesindeki “pdb” uzantılı dosyaya dikkatinizi çekmek istiyoruz. Kodun debug edilmesi yani hatalardan ayıklanması işlemiyle ilgili bilgiler bu dosyaya yazılmaktadır. Tabii bu bölümde hata ayıklama işlemleri üzerinde durmayacağımız için “pdb” uzantılı dosyanın işlevinden söz edilmeyecektir.

Yukarıda söylendiği gibi Visual Studio ile hazırladığınız C# projesini çalıştırıp test etmek için Debug menüsünden Start Debugging komutunu verebilir veya direk F5 tuşuna basabilirsiniz. Aslında Debug menüsünden bu komutu vermekle Visual Studio’ya bir bakıma “hazırladığım projeyi entegre hata ayıklayıcının nezaretinde test etmek istiyorum ve varsa hatalarından ayıklamak istiyorum” demiş oluyorsunuz. Üzerinde çalıştığınız projeyi Ctrl+F5 tuşları ile çalıştırırsanız projeyi entegre Debugger’dan bağımsız çalıştırmış olursunuz. Bu konunun ayrıntılarından daha sonra söz edilecektir.
En başında belirtmek gerekir ki Start Debugging komutu verildiği zaman proje için otomatik olarak hazırlanan EXE dosya başkalarına verilecek, başla bir deyişle projeden yararlanacaklara verilecek EXE kopya değildir. Elbette Start Debugging komutu sayesinde otomatik olarak hazırlanıp projeye ait klasörün içinde yer alan “\Bin\Debug” klasörüne yerleştirilen EXE dosyayı alıp başka bilgisayarda çalıştırmak mümkündür. Ancak debug modunda iken hazırlanan EXE dosyanın dağıtılması önerilmiyor.
Şimdi gelelim şu Debug moduna. Programcılar genelde uygulamalarını geliştirmeyi ve test etmeyi Debug modunda yaparlar. Ne zaman ki uygulama tamamlanıp testlerden geçer o zaman Release sürümü hazırlayıp kullanıcılara öyle verirler. Yukarıdaki sayfalarda işaret edildiği gibi Visual Studio ile yeni C# projesi hazırlanıp kaydedildiği zaman projeye ait klasörün içinde “Bin” ve “Obj” adında 2 klasör hazırlanmaktadır.
Derleme sırasında hazırlanan geçici dosyalar “Obj” klasörüne konulmaktadır. Obj klasörünün altında “Debug” ve “Release” adında 2 klasör hazırlanmaktadır. Aynı şekilde “Bin” klasörünün içinde yine “Debug” ve Release” adında 2 klasör hazırlanmaktadır. Uygulamanın Debug sürümü Bin klasörünün içinde bulunan \Bin\Debug klasörüne konulurken Release sürümü \Bin\Release klasörüne yerleştirilmektedir.
Yukarıda belirtildiği gibi Visual Studio ile bir Windows Forms Application hazırlayıp bu uygulamayı kaydedip sonrada Debug menüsünden Start Debugging komutunu verdiğinizde Visual Studio söz konusu uygulamayı önce derlemektedir. Tabi Visual Studio bu işlemi yaparken .NET Framework ile gelen C# derleyicisini kullanmaktadır. Derleme işlemi sırasında hazırlanan dosyalar \uygulama\obj\Debug klasörüne yerleştirilmektedir.

Start Debugging komutu verildiği zaman Visual Studio derleme yapıp bu dosyaları hazırladıktan sonra ayrıca “uygulama\Bin\Debug” klasörüne kodun EXE’sini ve birkaç dosya daha yerleştirilip bu EXE dosya çalıştırılmaktadır. Eğer hazırladığınız proje veya Solution’ı çalıştırıp test etmek yerine derlemek istiyorsanız Build menüsündeki komutlardan yararlanmanız gerekir. Build menüsünde gerçekte aşağıda verilen ekran görüntüsündekinden daha fazla komut bulunmaktadır. Başlangıçta Solution’ların derlemesiyle ilgili komutlar Build menüsünde yer almıyor. Eğer birden fazla projeyi bir Solution’da topluyorsanız Tools menüsünden komut verip ekrana Options diyalog kutusunu getirip Project And Solutions sekmesinde ayarlama yapabilirsiniz.

Bu menüdeki komutların adlarına üzerinde çalışılan projenin adı eklenmektedir. Bu sırada üzerinde çalıştığımız projenin Proje1’di. Üzerinde çalıştığınız projeyi derlemek üzere Build menüsünden Build komutunu verirseniz Visual Studio projenizi derler. Derleme sırasında önce Uygulama\obj\Debug klasörüne bazı dosyalar yerleştirilir. Derleme işleminin ikinci aşamasında birisi EXE olmak üzere birkaç dosya hazırlanıp Uygulama\Bin\Debug klasörüne yerleştirilir. EXE dosyayı çift tıklayıp veya Başlat menüsünden Çalıştır komutunu verip projenizi çalıştırabilirsiniz. Tabii profesyonel programcılar projeleri için kurma CD’si hazırlayıp uygulamalarını öyle dağıtırlar. Kurma CD’sini Visual Studio ile gelen Setup Wizard’dan yararlanarak hazırlayabilirsiniz.
Derleme sonucu hazırlanıp \Obj\Debug ve \Bin\Debug klasörlerine yerleştirilen dosyaları silmek istiyorsanız Build menüsünden Clean komutunu vermelisiniz. Daha önce derlediğiniz projeyi Build komutu ile tekrar derlediğinizde projenin yalnızca değişen kısımları gözetilir. Rebuild komutu ise projeyi sanki ilk kez derleniyormuş gibi yeni baştan derler.
Debug modundan Release moduna geçmek istiyorsanız Visual Studio’nun Debug menüsünden komut verip Cunfiguration Manager diyalog kutusunu ekrana getirmelisiniz. Başlangıçta bu komut Debug menüsünde yer almıyor ve bu nedenle Tools menüsündeki Options komutu ile ekrana getirilen diyalog kutusunda ayarlama yapmak gerekmektedir.
Optionsdiyalog kutusunda Project and Solution seçenek grubundaki Show advanced build configurations onay kutusunu seçmelisiniz. Bu ayarlamayı yapıp Debug menüsünde Cunfiguration Manager komutunun yer almasını sağlayıp bu komutu verdiğinizde akrana aşağıda verilen diyalog kutusu gelir.

Bu ekran görüntüsü alındığı sırada üzerinde çalıştığımız projenin dahil olduğu Solution bir tek projeye sahipti. Bu sırada Solution’da birden fazla proje olsaydı o projeler de listelenirdi. Bu diyalog kutusundaki Active Solution configuration ve Active solution platform liste kutularında yapılan seçimlerden bütün projeler etkilenmektedir.
Active Solution configurationliste kutusunu açıp Release’i seçerseniz Debug modundan Release moduna geçmiş olursunuz. Bu andan itibaren Debug menüsünden Start Debugging komutunu verip projeyi çalıştırırsanız EXE kodun Release sürümü hazırlanır ve bu EXE dosya “\Bin\Release” klasörüne yerleştirilir. Bu sırada yani Release modunda iken Build menüsünden Clean… komutunu verirseniz “\Obj\Release” ve “\Bin\Release” klasörlerine yerleştirilmiş dosyalar silinir.
Debug modunda iken Build menüsünden Build… veya Rebuild… komutu verilerek derleme yapıldığında derleme sonucu hazırlanan dosyalar yine “\Obj\Release” ve “\Bin\Release” klasörlerine yerleştirilmektedir. Hangi modda olduğunuzu öğrenirken Project Properties penceresinden yararlanabilirsiniz. Bu diyalog kutusunda yapılan seçim ve ayarlamalar hakkında daha sonra bilgi verilecektir.

Neler Deyimdir, Neler Anahtar Kelimedir?
Bu kitabın ileriki sayfalarında ayrıntılarını görebileceğiniz gibi C# kodu içinde operatörler, deyimler, anahtar kelimeler, değişkenler, sınıflar, nesneler, metotlar, arabirimler, nitelikler, yapıcı metotlar, indeksleyiciler, delegate’ler vs. olabilmektedir. Basic veya Pascal geleneğinden gelenler için “if” bir deyim iken C#’la ilgili bazı dokümanlarda “if” bir anahtar kelimedir. Hatta Microsoft kaynaklı metinlerde “if” bazen bir anahtar kelimedir bazen de bir deyim yani bir Statement’tir. İkinci bir örnek vermek gerekirse Microsoft’a göre ref bir anahtar kelimedir. Anlayacağınız neyin deyim neyin anahtar kelimi olduğunu tasnif etmek kolay olmadığı için bu kitapta yer yer deyim ile anahtar kelimeyi aynı anlamda kullandık.
2. Bölüm : C# İle Programcılığa Giriş
C# veya .NET Framework uyumlu bir programlama dili ile ilk kez ilgileniyorsanız C# ile Programcılığa Giriş adlı bir sonraki bölümde yazılanları dikkatlice okumanız önerilir. Yeni başlayanlar için bir sonraki bölümde hemen anlaşılmayan birkaç paragraf veya konu olsa bile bunun normal olduğunu kabul etmek gerek. Bir sonraki bölümde anlamadığınız cümleler olduysa, özellikle nesneye yönelik programcılıkla ilgili temel kavramlar hakkında bilgi sahibi olduktan sonra dönüp bu kitabın 2. bölümüne tekrar bakmanız önerilir. Bu arada bir sonraki bölümde bazı küçük tekrarların bilinerek yapıldığını bilmenizi isteriz. C# İle Programcılığa Giriş adını verdiğimiz bir sonraki bölümü küçük bir C# kitabı olarak düşünebilirsiniz.
Daha önce az çok kod yazmış olanlar bir sonraki bölüme şöyle bir baktıklarında bütün yazılanların bildikleri konular olduklarını sanabilirler. Sanabilirler diyoruz çünkü bir sonraki bölümde C# ile program yazılırken gerek duyulan pek çok kavram hakkında teknik açıklamalar yapılmaktadır. Bu nedenle bu kitabı eline alan herkesin bir sonraki bölümü dikkatli okumasını öneriyoruz. Tabii bu öneri kitapçıda veya herhangi bir yerde bu kitabı satın almayacakları önceden belli olup ta meraktan bu kitabı şöyle bir gözden geçirenleri veya C# hakkında yeterince bilgisi olanları kapsamıyor. Böyle bir kitaba ihtiyaçları olmayanların bir sonraki bölümde yazılanlara yabancı olmamaları normaldir. Tabi bir sonraki bölümün gerek içerik gerekse de konuların işleyişi bakımından bütün yerli yabancı kaynaklardan ayrıldığını söyleyebiliriz.
C# ile Programcılığa Giriş adlı bir sonraki bölümde yazılanları anlamakta zorluk çekenler Konsol Uygulamaları adı verilen 3. bölümün ilk 10 sayfasını okuduktan sonra tekrar 2. bölüme geçebilirler. Konsol Uygulamaları adlı bölümün ilk sayfalarında class’lardan ve metotlardan söz kısaca söz edilmektedir.
* Meraklısı İçin Notlar
Bu bölüm 1068 sayfalık kitapta yalnızca 18 sayfadır. Eğer bu metin piyadaki diğer Türkçe kitaplar gibi dizilirse sayfa sayısı en az 24 olur. Bu bölümü dikkat ettiyseniz Visual Studio hakkında çok özet bilgi verilmekle yetinildi. Eğer Visual Studio veya C# için hazırlanmış Express Edition hakkında biraz daha ayrıntılı bilgi edimmek istiyorsanız aşağıda linki verilen PDF'yi okumanız önerilir.
http://www.memikyanik.com/download/csharp_e_book.rar
.NET programcılığı hakkında bu kitap hemen her konuda mevcut kitaplardan fazla bilgi içerdiği için bırakın yeni kitap almayı daha önce almış olduğunuz C# konulu kitapları gönül rahatlığıyla başkalarına verebilirsiniz. Örneğin bu bölümde kısaca söz edilen DEBUG ve RELEASE modları hakkında başka kitaplarda bilgi bulma ihtimali son derece düşüktür.