Web projelerinin dağıtımında kaynak kodların korunması veya en azından alenen
ortaya konmaması genelde ticari projelerde istenen bir durumdur. Kendi adıma
konuşmam gerekirse ben hem daha kolay kullanım hem de müşteriye uzun vadede
kaynak kodu da değiştirerek daha esnek bir yapı ve kolaylık sağlanması adına
yazılımların kaynak kodları ile verilmesinden yanayım. Fakat tabi ki durum
projenin niteliklerine göre değişecektir.
Özellikle Visual Studio 2003 sonrasında web sitelerinin kod dosyalarının
DLL'lere çevrilmesine alışmıştık. Hatta bu durum hoşumuza bile gitmişti.
Sonrasında VisualStudio 2005 ile bu durum değişti ve varsayılan ayarlarda VS
artık DLL oluşturmamaya başladı. Tabi
aspnet_compiler.exe ve
aspnet_merge.exe komut satırı araçları kullanılarak bu işlemler
Visual Studio 2005 ile de yapılabiliyor fakat komut satırı için artık pek
kullanışlı bir araç diyemeyiz.
Bahsettiğim bu araçları arkaplanda otomatik olarak kullanabilecek bir Windows
programı gönüllü bir programcı olan ve benim de blogunu takip ettiğim
Rick Strahl tarafından hazırlanmış durumda. Aslında bu yeni bir haber
değil, yıllardır ben kullanıyordum :) ama yazısı yazmak bugüne nasipmiş.
Programı hemen aşağıdaki adresten indirebilirsiniz.
http://www.west-wind.com/files/tools/WestWindAspNetCompilerUI.zip (99 KB)

ASP.NET Compiler Yardımcısı
Programın tüm özelliklerini tek tek anlatmaktansa yukarıdaki fotoğrafta
hızlıca açıklamayı tercih ettim. Özellikle üzerinden durmamız gereken
noktalardan biri "ASPX files are updateable" seçeneği. Eğer bu seçeneği
işaretlerseniz projenizin ASPX dosyalarındaki HTML kodları da DLL dosyalarının
içerisine yerleştirilecektir. Böylece ASPX dosyaları içerisinde sadece "This is a marker file generated by the precompilation tool, and should not be deleted!"
yazısı yer alacak. ASPX dosyalarının içeriklerini DLL içerisine koysak da
fiziksel olarak dosyaların bu uyarı mesajı ile disk üzerinde yer alması
gerekiyor, aksi halde IIS 404 File Not Found hatası verecektir.
Bir diğer önemli ayar da "Fixed Names for assemblies" seçeneği. Eğer bu
seçeneği işaretlerseniz her bir sınıf, ASPX dosyası için ayrı DLL dosyaları
oluşturulacaktır böylece rahatlıkla bir dosyada değişiklik yaptığınızda o
dosyaya ait DLL'i sunucuya göndererek projenizi yenileyebilirsiniz.
Eğer kolay dağıtım sizin için çok önemliyse tüm projenizin HTML kodları ile
beraber sadece bir DLL olarak hazırlanmasını da sağlayabilirsiniz. Bunun için "Single
Assembly" seçeneğini seçerek DLL dosyası için bir isim vermeniz yeterli. Ayrıca
bu işlemi projenizdeki her bir klasor için ayrı ayrı düzenlenecek şekilde de
ayarlayabilirsiniz. "Merging" bölümündeki özelliklerden faydalanabilmeniz için
sisteminizde Visual Studio 2005 için
Visual Studio 2005 Web Deployment Projects
yüklemesinin yapılmış olması gerekiyor.
Diğer Framework sürümleri?
Yukarıdaki aracı .NET Framework 2.0 için, yani ASP.NET 2.0 için rahatlıkla
kullanabilirsiniz. Program içerisinde Framework seçimi yer alsa da maalesef 3.0
veya 3.5 ile çalışmıyor. Bu durumda Merging haricindeki işlemler için doğrudan
Visual Studio 2005 veya 2008'i de kullanabiliriz. Build / Publish menüsünde söz
konusu ayarlara ulaşabilirsiniz.
Hepinize kolay gelsin.