wmismail Posted August 5, 2008 Share Posted August 5, 2008 .NET Framework’te Yer Alan genel Araçlar – 1/5 .NET Framework bize Framework’ün sunduğu avantajlardan en iyi şekilde yararlanabilmemiz için pek çok araç sunuyor. Çoğumuz bu araçları biliyoruz ve kullanıyoruz. Bir dizi halinde hazırlayacağım bu yazıyla .NET Framework’teki bu araçları detaylı olarak inceleyeceğiz. Toplam 13 aracı inceleyeceğiz ve detaylı desemde, tüm özellikleri ve fonksiyonları mümkün olduğunca kısa bir şekilde ele alacağız ve yazılar oldukça kısa olacak. Her yazıda 2 veya 3 (3. bölüm hariç) aracı inceleyeceğiz. Neden tümünü bir yazı ile incelemeyipte bölümler halinde ele aldığımı merak edenler email yada icq yoluyla iletişim kurabilirler. J Aşağıda inceleyeceğimiz araçların bir listesi yer alıyor. · Assembly Generation Utility (al.exe) 1 · Assembly Registration Utility (gac.exe) 1 · MSIL Assembler (ilasm.exe) 2 · MSIL Disassembler (ildasm.exe) 2 · C++ Compiler (cl.exe) 3 · C# Compiler (csc.exe) 3 · VB Compiler (vbc.exe) 3 · PE File Viewer (dumpbin.exe) 3 · Type Library Exporter (tlbexp.exe) 4 · Type Library Importer (tlbimp.exe) 4 · XML Schema Definition Tool (xsd.exe) 5 · Shared Name Utility (sn.exe) 5 · Web Service Utility (wsdl.exe) 5 Listedende görebildiğiniz gibi bölüm sayısınıda fazla tutmamaya çalıştım ve bu yazı dizisi, bu yazı dahil toplam 5 bölümden oluşacak. Bu yazı dizisinde yer alan pek çok kavram “Common Language Runtime” başlıklı yazıda detaylı olarak açıklanmıştır. Kavramlarla ilgili takıldığınız noktalarda bu makale büyük ihtimalle sorununuzu çözmenide yeterli olacaktır. Dizinin ilk bölümünde iki aracı inceleyeceğiz. Bunlardan ilki Assembly Generation Utility, ikincisi Assembly Registration Utility. Assembly Generation Utility (al.exe) Al.exe genellikle assemblyları oluşturmak için kullanılsada, aynı zamanda assemblyları Global Assembly Cache’ye (GAC) install etmek içinde kullanılabilir. Aşağıdaki tablo Assembly Generation Utility’ye ait en sık kullanılan seçenekleri listeliyor. Parametre Açıklama /flags:flags Assemblydaki flagler için bir değer belirtir. · 0x0000: side-by-side uyumlu. · 0x0010: aynı uygulama domaini içerisinde farklı sürümlerle çalışamaz. · 0x0020: aynı proses içerisinde diğer sürümlerle çalışamaz. · 0x0030: aynı bilgisayarda diğer sürümlerle çalışamaz. /help veya /? Bir komutla ilgili yardım almak için kullanılır. /install:dosyaadı veya /i:dosyaadı Bir assemblyı GAC’e install etmek için kullanılır. /keyfile:anahtardosyasıadı veya /keyf:anahtardosyasıadı Paylaşılmış (shared) bileşenler oluşturmakta kullanılır. Keyfilename, Shared name Utility (sn.exe) tarafından oluşturulmul bir anahtar çifti içerir. Derleyici public key’i manifeste ekler ve assemblyı private key ile imzalar. /keyname:keycontainer veya /keyn:keycontainer Paylaşılmış (shared) bileşenler oluşturmakta kullanılır. Keycontainer Shared Name Utility (sn.exe) ile oluşturulmuş ve bir key containera eklenmiş bir anahtar çifti içerir. Derleyici public key’i assembly manifeste ekler ve assemblyı private key ile imzalar. /main:entrymetotu Bir modülü executable dosyaya çevirirken giriş noktası metotunu tanımlar. /out:dosyaadı Kaydedilecek dosya adını belirtir. /type:lib|exe|win veya /t:lib|exe|win Kaydedilecek dosyanın formatını tanımlar. (library için lib, konsol uygulaması için exe, win32 uygulaması için win). Varsayılan değeri lib dir. /version:major.minor.revision.build Assembly için sürüm numarasını belirtir. Varsayılan değer 0 (sıfır) dır. Assembly Registration Utility (gac.exe) Gac.exe aracını assemblyları install ve uninstall etmek için kullanabileceğiniz gibi GAC’ın içeriğini listelemek içinde kullanabilirsiniz. Aşağıdaki tablo Assembly Registration Utility aracının en sık kullanılan bazı seçeneklerini listeliyor. Opsiyon Açıklama -l GAC’ın içeriğini listelemek için kullanılır. -lc GAC’ın içeriğini listelemek için kullanılır. -i dosyaadı Dosyaadı ile belirtilen bir assemblyın GAC’a install edilmesini sağlar. -u assemblyadı Bir assembly adı belirterek, belirtilen assemblyın GAC’dan uninstall edilmesi için kullanılır. Eğer bir assemblyın farklı sürümleri mevcutsa bir sürüm numarası belirtilmemesi halinde aynı adı taşıyan tüm assemblylar uninstall edileceklerdir. Sürüm numarası belirtmek için kullanılacak syntax aşağıdaki örnekteki gibidir: gac –u silinecekassembly, ver=1.0.0.1 Başta söz verdiğim gibi mümkün olduğunca kısa ve öğrenmeye yönelik bir formatla ilk bölümü bitirdik. Bu araçları henüz kullanmadıysanız ve .NET ile yazılım geliştirecekseniz, bu araçları deneyerek burada yer vermediğim parametreleride görmenizi ve denemenizi öneririm. Link to comment Share on other sites More sharing options...
wmismail Posted August 5, 2008 Author Share Posted August 5, 2008 .NET Framework’te Yer Alan genel Araçlar – 2/5 .NET Framework içindeki en önemli araçları incelediğimiz yazı dizimizin ikinci bölümüne hoşgeldiniz. Dizinin ilk bölümünde Assembly Generation Utility (al.exe) ve Assembly Registration Utility (gac.exe) araçlarını incelemiştik. Bu bölümde yine iki araç inceleyeceğiz. Bunlardan ilki MSIL Assembler (ilasm.exe) ve MSIL Disassembler (ildasm.exe). Not: Bu yazı dizisinde yer alan pek çok kavram “Common Language Runtime” başlıklı yazıda detaylı olarak açıklanmıştır. Kavramlarla ilgili takıldığınız noktalarda bu makale büyük ihtimalle sorununuzu çözmenide yeterli olacaktır. MSIL Assembler (ilasm.exe) Bu araç MSIL kodu alarak .NET framework üzerinde bir uygulamanın çalışması için ihtiyaç duyulan MSIL ve metadatayı içeren bir Porable Executable dosya haline dönüştürür. Bu araç MSIL-uyumlu derleyiciler geliştirmek isteyen/geliştiren geliştiriciler için oldukça faydalıdır. Bu araç sayesinde yapılması gereken tek işlem, kaynak kodu MSIL’e dönüştürecek bir derleyici geliştirmektir. Ilasm.exe işin geri kalanını yani MSIL içeriği, .NET Framework üzerinde çalışabilecek PE formatına dönüştürme işlemini gerçekleştirecektir. MSIL Assembler için genel sözdizimi aşağıdaki gibidir; İlasm [seçenekler] MSILdosyaadı Aşağıda bu araçla ilgili en önemli parametreleri görebilirsiniz. Seçenek Açıklama /debug Bu seçenek, kaydedilecek PE dosyanın yerel değişkenler, arguman adları ve satır numaraları gibi debug bilgilerini içermesini sağlamak için kullanılır. Bu seçenek, debug build için oldukça kullanışlıdır. /dll Bu seçenek bir .dll dosyası üretir. /exe Bu seçenek bir .exe dosyası üretir. /output=dosyaadı Dosyaadı, kaydedilecek dosyanın adını temsil eder. /? Bu seçenek, yardım bilgilerini görüntüler MSIL Disassembler (ildasm.exe) Bu araç, .NET Framework üzerinde çalışmak için hazırlanmış bir PE dosyasından MSIL kodu üretir. Bu aracın kullanımı için genel sözdizimi aşağıdaki gibidir: ildasm [seçenekler] PEDosyaadı Aşağıda bu araçla ilgili bazı önemli seçenekleri görebilirsiniz. Seçenekler Açıklama /out:dosyaadı Bu seçenek görsel bir diyalog kutusu yerine dosyaya gidilmesini sağlar. /linenum Orijinal satırlara referans içermesini sağlar. /source Bu seçenekle orijinal satırlar yorum olarak görülür. /text Çıktı bir konsol ekranında görüntülenir. /tokens Bu seçenekşe metadata izleri sınıf olarak görüntülenirler. İkinci yazınında sonuna geldik. İlk yazıdada yazdığım gibi, bu araçları henüz kullanmadıysanız ve .NET ile yazılım geliştirecekseniz, bu araçları deneyerek burada yer vermediğim parametreleride görmenizi ve denemenizi öneririm. Bir sonraki yazıda C++, C# ve VB.NET derleyicilerini inceleyeceğiz. Link to comment Share on other sites More sharing options...
wmismail Posted August 5, 2008 Author Share Posted August 5, 2008 .NET Framework’te Yer Alan genel Araçlar – 3/5 .NET Framework içindeki en önemli araçları incelediğimiz yazı dizimizin üçüncü bölümüne hoşgeldiniz. Dizinin ilk bölümünde Assembly Generation Utility (al.exe) ve Assembly Registration Utility (gac.exe) araçlarını, ikinci bölümde MSIL Assembler (ilasm.exe) ve MSIL Disassembler (ildasm.exe) araçlarını incelemiştik. Bu bölümde ise ilk iki bölümdekinden farklı olarak dört araç inceleyeceğiz. Bunlar C++ Compiler (cl.exe), C# compiler (csc.exe), VB Compiler (vbc.exe) ve PE File Viewer (dumpbin.exe) araçları. Not: Bu yazı dizisinde yer alan pek çok kavram “Common Language Runtime” başlıklı yazıda detaylı olarak açıklanmıştır. Kavramlarla ilgili takıldığınız noktalarda bu makale büyük ihtimalle sorununuzu çözmenide yeterli olacaktır. C++ Compiler (cl.exe) Aşağıda C++ derleyicisi ile ilgili sık kullanılan bazı seçenekler görülmektedir: Seçenek Açıklama /CLR veya /COM+ Bu seçenekler derleyicinin kodu .NET Runtime managed code şekilde derlemesini sağlar. /entry:metotadı C++ managed kod için bu seçenek ana giriş noktası fonksiyonunu tanımlar. /link Bu seçenek derleme ve link adımlarını birleştirir. /out:dosyaadı Kaydedilecek dosya adını belirtir. C# Compiler (csc.exe) Aşağıda C# derleyicisi ile ilgili sık kullanılan bazı seçenekler görülmektedir: Seçenek Açıklama /a.keyfile:anahtardosyasıadı Anahtardosyasıadı assemblyın imzalanmasında kullanılacak anahtar çiftini içeren anahtar dosyasını temsil eder. /a.version:sürüm Assemblyların sürümlendirilmesinde kullanılır. /debug Bu seçenek ile derleyici kaydedilecek dosyaya debug bilgisini ekler. /define:sembol veya /d:sembol C++ ile benzer bir seçenek olan bu seçenek, preprocessor sembollerinin tanımlanmasında kullanılır. /help C# derleyicisine ait komut satırı yardım bilgileri. /main:sınıfadı Eğer farklı sınıflarda birden çok main entry point varsa, uygulama için kullanmak istediğiniz sınıftaki main entry pointi belirtmeniz gerekir. Bu seçenek, bu işlemin yapılmasında kullanılır. /out:dosyaadı Kaydedilecek dosyanın adının belirlenmesinde kullanılır. /reference:kütüphaneadı veya /l:kütüphaneadı Bu seçenek tek veya çoklu kütüphanelerin derleme işlemiyle include edilmesini sağlar. Çoklu kütüphaneleri ayırmak için noktalı virgül “;” kullanmak gerekir. /target:exe|library|winexe veya /t:exe|library|winexe Bu seçenek kaydedilecek dosyanın formatının belirlenmesinde kullanılır. Konsol uygulamaları için exe, DLL’ler için library, windows form uygulamaları için winexe seçilir. Visual Basic Compiler (vbc.exe) Aşağıda Visual Basic derleyicisi ile ilgili sık kullanılan bazı seçenekler görülmektedir: Seçenek Açıklama /cls Bu seçenek CLS (common language specification) denetimini açar. /debug Bu seçenek kaydedilecek dosyaya debug bilgisini ekler. /define:sembol veya /d:sembol Bu seçenek preprocessor sembollerinin tanımlanmasında kullanılır. /help veya /? VBC için komut satırı yardımı. /keycontainer:keycontainer Keycontainer assemblyın imzalanmasında kullanılacak anahtar çiftini içeren key containerı temsil eder. Key container oluşturmak ile ilgili bilgi için SN.exe dosyasını inceleyiniz. /keyfile:anahtardosyasıadı anahtardosyasıadı assemblyın imzalanmasında kullanılacak anahtar çiftini içeren anahtar dosyasını temsil eder. Anahtar dosyası oluşturmakla ilgili bilgi için sn.exe dosyasını inceleyiniz. /main:sınıfadı Eğer farklı sınıflarda birden çok main entry point varsa, uygulama için kullanmak istediğiniz sınıftaki main entry pointi belirtmeniz gerekir. Bu seçenek, bu işlemin yapılmasında kullanılır. /out:dosyaadı Kaydedilecek dosyanın adının tanımlanmasında kullanılır. /optionexplicit[+/-] Değişkenlerin explicit veya inplicit tanımlanmasını zorlamak için optionexplicit’i açar veya kapatır. Varsayılan değeri açıktır. /optionstrict[+/-] Optionstrict’i açar veya kapatır. Varsayılan değeri açıktır. /reference:kütüphaneadı veya /r:kütüphaneadı Bu seçenek tek veya çoklu kütüphanelerin derleme işlemiyle include edilmesini sağlar. Çoklu kütüphaneleri ayırmak için noktalı virgül “;” kullanmak gerekir. /target:exe|library|winexe veya /t:exe|library|winexe Bu seçenek kaydedilecek dosyanın formatının belirlenmesinde kullanılır. Konsol uygulamaları için exe, DLL’ler için library, windows form uygulamaları için winexe seçilir. PE File Format Viewer (dumpbin.exe) Aslında dumpbin yeni bir araç değil. .NET Framework IL kodu genişletilmiş PE formatı içinde barındırsada, bu eski araç exe veya dll dosyalarının yapısının incelenmesinde, binary dosyaların import ve export girişlerini listelemekte halen oldukça kullanışlıdır. Bu aracın kullanımına ilişkin sözdizimi genellikle aşağıdaki gibidir: Dubpbin [seçenekler] Pedosyası Aşağıdaki tablo bu sözdizimindeki seçenekler ifadesiyle kastettiğimiz seçeneklerden en sık kullanılanlarını listeliyor. Seçenek Açıklama /all PE dosyasına ilişkin tüm bilgileri görüntüler. /exports PE dosyasına ait tüm exports bilgilerini görüntüler. /header PE dosyasının başlık bilgisini görüntüler. /imports PE dosyasına ait tüm imports bilgilerini görüntüler. Dizinin 3. yazısınında sonuna geldik. Bir sonraki yazıda Type Library Exporter ve Type Library Importer araçlarını inceleyeceğiz. Link to comment Share on other sites More sharing options...
wmismail Posted August 5, 2008 Author Share Posted August 5, 2008 .NET Framework’te Yer Alan genel Araçlar – 4/5 .NET Framework’te yer alan genel araçları incelediğimiz yazı dizimizin 4. bölümünden merhabalar. Bu bölümde kısaca Type Library Importer ve Type Library Exporter araçlarını inceleyeceğiz. Type Library Importer (tlbimp.exe) Type Library Importer aracı .NET bileşenlerinin COM bileşenlerini kullanabilmeleri için Com bileşenleri için .NET proxy bileşenleri üretir. Tlbimp.exe aracının kullanımı aşağıdaki gibidir: tlbimp.exe Pedosyası [seçenekler] Seçenek Açıklama /keycontainer:keycontainer Bu seçenek assembly’ı keycontainer’da bulunan private anahtar ile imzalar. Anahtar dosyasında yer alan Public anahtar assembly manifestte kullanılacaktır. Anahtar dosyası oluşturmakla ilgili detaylar için sn.exe aracını inceleyin. /keyfile:keyfile Bu seçenek assembly’ı anahtar dosyasında yer alan private anahtar ile imzalar. Anahtar dosyasında yer alan Public anahtar assembly manifestte kullanılacaktır. Anahtar dosyası oluşturmakla ilgili detaylar için sn.exe aracını inceleyin. /nologo Bu seçenek tlbimp aracının logosunu gizler. /silent Bu seçenek tlbimp aracından gelen mesajları gizler. /unsafe Bu seçenek arabirimleri .NET Framework güvenlik denetimlerini uygulamadan üretir. /verbose Bu seçenek bileşen dönüştürülürken ek bilgiler görüntüler. /? veya /help Bu seçenek tlbimp.exe aracının yardım dosyasını görüntüler. Type Library Exporter (tlbexp.exe) Bu araçsa, type library importer aracının yaptığı işin tam tersini yapar. Bir .NET Framework assembly’ı için sınıf kütüphanesi üretir, böylece diğer COM bileşenleri .NET bileşenleriyle bir arada uyumlu bir şekilde çalışabilirler. tlbexp aracının genel kullanımı aşağıdaki şekildedir: tlbexp AssemblyAdı [seçenekler] Seçenek Açıklama /nologo Bu seçenek tlbexp aracının logosunu gizler. /silent Bu seçenek tlbexp aracından gelen mesajları gizler. /verbose Bu seçenek bileşen dönüştürülürken ek bilgiler görüntüler. /out:dosyaadı Dosyaadı, oluşturulacak sınıf kütüphanesinin adıdır. /? veya /help Bu seçenek tlbexp aracına ait yardım dosyasını görüntüler. Dizinin bir sonraki ve son bölümünde 3 aracı, XML Schema Definition Tool, Shared Name Utility ve Web Service Utility araçlarını inceleyeceğiz. Link to comment Share on other sites More sharing options...
wmismail Posted August 5, 2008 Author Share Posted August 5, 2008 .NET Framework’te Yer Alan genel Araçlar – 5/5 .NET Framework’te yer alan genel araçları incelediğimiz yazı dizimizin son bölümüne hoşgeldiniz. Önce şimdiye kadarki bölümlerde hangi araçları incelediğimizi görelim; · Assembly Generation Utility (al.exe) 1. Bölüm · Assembly Registration Utility (gac.exe) 1. Bölüm · MSIL Assembler (ilasm.exe) 2. Bölüm · MSIL Disassembler (ildasm.exe) 2. Bölüm · C++ Compiler (cl.exe) 3. Bölüm · C# Compiler (csc.exe) 3. Bölüm · VB Compiler (vbc.exe) 3. Bölüm · PE File Viewer (dumpbin.exe) 3. Bölüm · Type Library Exporter (tlbexp.exe) 4. Bölüm · Type Library Importer (tlbimp.exe) 4. Bölüm Bu bölümde ise 3 önemli aracı, XML Schema Definition Tool (xsd.exe), Shared Name Utility (sn.exe) ve Web Service Utility (wsdl.exe) araçlarını inceleyeceğiz. XML Schema Definition Tool (xsd.exe) XML Şema Tanımlama Aracı XML şemaları ile çalıştığınız durumlarda oldukça işinize yarayacaktır. XSD dili sayesinde aşağıdaki dönüşümleri kolayca yapabilirsiniz. · XDR à XSD · XML à XSD · Sınıf à XSD · XSD à Sınıf · XSD à Dataset XDR à XSD XDR şeklinde biçimlendirilmiş bir dosyayı XSD’ye dönüştürmek için aşağıdaki sözdizimini kullanmanız gereklidir: xsd [seçenekler] dosya.xdr XML à XSD XML şeklinde biçimlendirilmiş bir dosyayı XSD’ye dönüştürmek için aşağıdaki sözdizimini kullanmanız gereklidir: Xsd [seçenekler] dosya.xml Sınıf à XSD Varolan sınıflarınızı xsd.exe aracını kullanarak (.exe veya .dll uzantılı dosyayı belirterek) XSD’ye dönüştürebilirsiniz. Aynı zamanda assembly içindeki XSD’ye dönüştürmek istediğiniz belirli bir sınıfı /type seçeneği ile belirtebilirsiniz. Eğer type ifadesini kullanmazsanız, assembly içindeki tüm türler dönüştürülür. Sözdizimi aşağıdaki gibidir: XSD [/TYPE:türadı] assemblyDosyası Veya XSD [/T:türadı] assemblyDosyası XSD à Sınıf Bir XSDyi yeniden sınıfa dönüştürmek için “/classes” veya “/c” seçeneklerini kullanıyoruz. XSD şeması içerisinde sınıfa dönüştürmek istediğiniz belirli bir öğeyi belirtebilirsiniz. Aynı zamanda kullanılmasını istediğiniz dilide belirtebilirsiniz. Genel sözdizimi aşağıdaki gibidir: Xsd /CLASSES Xsd /ELEMENT:öğe (sınıfa dönüştürülecek öğe) Xsd /NAMESPACE:alanadı Xsd /LANGUAGE:dil /URI:uri dosya.xsd veya Xsd /C E:öğe /N:alanadı /L:dil /U:uri dosya.xsd XSD à DataSet Bir XSDyi DataSete dönüştürmek için “/dataset” veya “/d” seçeneklerini kullanıyoruz. Yine XSD içinde DataSete dönüştürmek istediğiniz belirli bir öğeyi belirtebilirsiniz. Sözdizimi aşağıdaki gibidir: Xsd /D [DataSet] dosya.xsd Shared Name Utility (sn.exe) Beş bölümlük yazı dizisi boyunca sıkça bahsettiğimiz sn.exe aracına geldi sıra. Sn.exe, paylaşılan bileşenlerin unique adlara sahip olmalarını sağlar. Her paylaşılmış bileşen özel bir anahtar ile imzalanır ve public key ile yayınlanır. Aşağıdaki tablo sn.exe aracının kullanımı ile ilgili bazı seçenekleri listeliyor: Seçenek Açıklama /? Sn.exe aracına ait komut satırı yardım dosyasını görüntüler /-d keycontainer Bu seçenek keycontainerı CSP’den çıkartmak için kullanılır. /I anahtardosyası anahtardosyasıadı Bu seçenek anahtar dosyasındaki anahtar çiftini okur ve keycontainera ekler. -k keyfile Bu seçenek yeni bir anahtar çifti oluşturur ve anahtar dosyasına yazar. -v assembly Bu seçenek assemblya ait paylaşılmış adı denetlemekte/doğrulamakta kullanılır. Web Service Utility (wsdl.exe) Wsdl.exe asp.net web servisleri ve istemcileri için proxyler oluşturmamıza yardımcı olur. Wsdl.exe genellikle web servisleri için proxy sınıfları oluşturmakta kullanılır. Wsdl /command:proxy Wsdl /path:path Wsdl /language:dil Wsdl /namespace:alanadı Wsdl /out:çıktı Wsdl /protocol:protokol Veya Wsdl /c:proxy Wsdl /pa:path Wsdl /l:dil Wsdl /n:alanadı Wsdl /o:çıktı Wsdl /p:protokol Path parametresi, SDL dosyasının alınabileceği bir servis tanımlama dosyasının veya URI’nin lokal dizinidir. Language parametresi output-proxy kaynak dosyasında kullanılacak dili tanımlamakta kullanılır. Bu parametrenin değeri C#, VB veya JS olabilir. Output-source dosyası output seçeneğiyle belirlenir. Protocol, proxy’nin web servisi ile iletişim kurarken kullanacağı protokolü tanımlamakta kullanılır. .NET Framework tarafından bizlere sunulan alternatifler; SOAP, HttpGet ve HttpPost tur. ProtocolInfoImporter sınıfından kendinize özgü bir protokol geliştirdiyseniz burada kendi protokolünüzüde kullanabilirsiniz. Dizimizin son aracınıda inceledik ve yazı dizisinin sonuna geldik. .NET Framework ile kullanabileceğiniz araçlar elbette bunlarla sınırlı değil. Biz en sık kullanılan araçları kısaca inceledik, bu dizinin asıl amacı, bu araçlardan habersiz olan .net geliştiricilerine, .NET Framework’ün işlerini kolaylaştırmak için sunduğu araçları tanıtmaktı. Kaynak: .NET Framework SDK O’R .NET Frm. Essentials Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.