C# Komut Satırı Derleyicisi (csc.exe) ve Responce Files Kavramı


Komut Satırı Derleyicisi (csc.exe) Nedir?

Visual Studio veya benzer IDE’ler kullanarak yaptığımız derleme işlemini csc.exe’yi kullanarak komut satırı üzerinden yapabiliriz.
C# komut satırı derleyicisi .NET Framework SDK ile birlikte ücretsiz olarak dağıtılmaktadır. Dolayısıyla .NET ortamında uygulama geliştirmek için www.microsoft.com sitesinden .NET Farmework SDK’nın son sürümünü bilgisayarınıza indirip kullanmaya başlayabilirsiniz.
Öncelikle komut satırı ile derleme yapabilmemiz için csc.exe dosyasının bulunduğu dizini sistem özelliklerinde tanımlamamız gerekmektedir. Bu işlemi şu şekilde yapabiliriz:
Not:  Windows 7 üzerindeki ayarları anlatıyor olsam da diğer işletim sistemlerinde de benzer şekilde yapılmaktadır.

Control Panel -> System and Security -> System -> Advanced system settings

Buraya tıklanarak aşağıdaki ekrana ulaşabiliriz.


Buradan “Environment Variables” butonuna tıkladığınızda karşınıza çıkacak olan aşağıdaki ekrandan "System Variables" alanından Path seçeneğini seçin.


Path seçecenği tıklanarak açılan penceredeki Variable value alanının sonuna ; karakterini ekledikten sonra csc.exe dosyasının bulunduğu dizini yazın. csc.exe dosyası kullandığınız işletim sistemini göre değişiklik gösterebilir ancak genellikle aşağıdaki gibidir.

C:\WINDOWS\Microsoft.NET\Framework\ v4.0.30319

Son dizin kullandığınız Framework’un versiyon numarasını göstermektedir.
Bu işlemleri doğru bir şekilde yaptığımızda komut satırı üzerinden programlarımızı derleyebilecek hale geldik demektir. Şimdi bu derleme işlemi nasıl yapılıyor ona bakalım.
Derleme İşlemi Nasıl Yapılır?
Öncelikle aşağıdaki kod parçacığını bir Notepad açarak içerisine kopyalayıp TestApp.cs olarak kaydedelim.
// A simple C# application.
using System;
class TestApp
{
    static void Main()
    {
        Console.WriteLine("Testing! 1, 2, 3");
    }
}

Şimdi Run -> cmd yazarak komut satırını çalıştıralım. Ardından komut satırında cd ile TestApp.cs dosyasını kaydettiğimiz dizine gelelim.
csc.exe ile en basit derleme işlemi bir girdi dosya ve çıktı dosya belirtme ile yapılır. Örneğin TestApp.cs dosyasını Program.exe şeklinde derlemek için aşağıdaki komutu çalıştırmamız yeterlidir.

> csc TestApp.cs /out:Program.exe

Eğer out parametresini kullanmayıp komutu

> csc TestApp.cs
şeklinde çalıştırsaydık derleme işlemi başarılı olurdu ancak oluşturulan çalıştırılabilir dosyanın adı TestApp.exe olurdu.
Bu çalışma sonrasında exe oluşmasının nedeni \t:exe parametresi csc’nin default parametresidir eğer nasıl derleneceği belirtilmez ise csc exe olarak derler. Eğer kod sonucu bir dll oluşturmak istiyorsak \t:library kullanırız. Bunun gibi benzer parametreleri aşağıdaki tablodan inceleyebilirsiniz.


Referans Nasıl Verilir?
Projemizin bir form application olduğunu düşünelim. Bu durumda projemize ‘System.Windows.Forms.dll’ eklememiz gerekmektedir.  Bu durumda” \r:Referans verilen DLL” parametresini kullanarak bu dll’i referans verebiliriz.

using System;
// Add this!
using System.Windows.Forms;
class TestApp
{
    static void Main()
    {
        Console.WriteLine("Testing! 1, 2, 3");
        // Add this!
        MessageBox.Show("Hello...");
    }
}


csc /r:System.Windows.Forms.dll TestApp.cs

Birden çok referans verilecek dll var ise bu durumda ; (noktalı virgül) ile bu dll’ler yazılır.

csc /r:System.Windows.Forms.dll;System.Drawing.dll TestApp.cs

Eğer birden çok kod dosyamız var ise bu durumda aralarında boşluk bırakılarak kod dosyaları yazılır.

csc /r:System.Windows.Forms.dll TestApp.cs HelloMsg.cs

Eğer ki o klasör içerisindeki tüm kod dosyalarının derlenmesini istiyorsak  tek tek dosya isimlerini yazmak yerine * ile bunu kolayca yapabiliriz.

csc /r:System.Windows.Forms.dll *.cs


Responce Files

Bu örneklerimizde devamlı tek dosyayı derledik bu kolay bir işlemdi peki kompleks bir projemiz varsa o kadar referansı parametreyi her derleyişimizde yazmamış tahmin edersiniz ki çekilmez bir hal alacaktır. Bu durumda Responce Files kullanabiliriz. Bu dosyalar rsp uzantılıdır ver içerlerinde derleme için gerekli komutlar tutulur.
Örnek:
# This is the response file
# for the TestApp.exe example

# External assembly references.
/r:System.Windows.Forms.dll

# output and files to compile (using wildcard syntax).
/target:exe /out:TestApp.exe *.cs


Bu yazılanları Notepad’e kopyalayıp TestApp.rsp olarak kaydelim. Programımızı derlememiz için rsp dosyamızın önüne @ işareti koyup csc’yi çalıştırmamız yeterlidir.

csc @TestApp.rsp

Diğer bir örnek kullanımda şöyle olabilir:

csc /out:MyCoolApp.exe @TestApp.rsp

fakat bu derleme sonucu /out: MyCoolApp.exe vermemize rağmen rsp dosyasında tanımladığımız /out:TestApp.exe dikkate alınır ve TestApp.exe oluşur. Eğer rsp dosyası içerisindeki bir parametreyi ezmek istiyorsak derleme yapılırken rsp dosya isminden sonra yazılması gerekmektedir.

csc @TestApp.rsp /out:MyCoolApp.exe

Default Responce File

csc.exe ile responce file kullanmadan derleme yaptığımızda default olarak SDK kendi default responce dosyasını kullanır.csc.rsp dosyası

C:\WINDOWS\Microsoft.NET\Framework\ v4.0.30319

Altında bununur. Bu dosya bulunup Notepad ile açılıp içeriğine bakılırsa derleme için gerekli dll’lerin burada tanımlı olduğunu görürüz. Derleme sırasında bu default rsp dosyasının kullanılmasını istemiyorsak /noconfig parametresini kullanabiliriz.

csc @TestApp.rsp /noconfig




0 yorum :

Yorum Gönder