ASP.NET Compile Seçenekleri - Makale - Yazılım Dilleri
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.