Arda Çetinkaya Yazılım ve arada kendim ile ilgili karaladıklarım…

Team Foundation Server’da Work Item’lardan yada başka herhangi bir Item’ı excel’e export etmeye çalıştığınızda aşağıdaki hatayı alıyorsanız,küçük bir kaç şey yapmanız gerekiyor.

“TF80042: The document cannot be opened because you do not have Microsoft Excel 2003 or later, or one of its components installed. For more information, see the Team Foundation Installation Guide.”

Öncelikle bu hatanın nedeni Excel’in ilgili bileşenlerinin yüklü olmaması. Eğer Excel’i her hangi bir .NET kurulumundan önce kurduysanız, Excel’in kurulum aşamasında opsiyonel olarak sorduğu .NET Programmability Support‘u yüklememiş oluyorsunuz. Bu bileşeni tekrardan yüklemek için http://blogs.microsoft.co.il/blogs/srlteam/archive/2007/07/17/Error-when-trying-to-export-queries-to-Excel.aspx adresindeki açıklamarı takip edebilirsiniz.

 

Bunuda gördüm ya;

memoryleakie7

Az önce bilgisayarım yavaşlamasından dolayı bakma gereği duyduğum Task Manager’da ki görüntü yukarıda ki gibiydi. Sadece 4 tab açık olmasına rağmen, Internet Explorer 7’nin kendince kaynak tüketiyor olması nedense pek şaşırtmadı beni…

Bugün ofiste karşılaştığımız bir problemi paylaşmak istiyorum. Service Pack 1 yüklenmiş bir Visual Studio 2008’e Team Explorer yükleyince, Team Explorer ne yazık ki düzgün çalışmıyor.

Could not load type ‘Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemTypeDeniedOrNotExistException’ from assembly ‘Microsoft.TeamFoundation.WorkItemTracking.Client, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’

Yukarıdaki gibi ya da benzer hataları alabiliyoruz. Bundan dolayı SP1’i tekrardan yüklemek gerekiyor. Ancak Visual Studio 2008’e önce Team Explorer kurarsanız daha sonra SP1’i yüklerseniz, SP1 aynı zamanda Team Explorer’ı da güncelliyor ve sorun yaşamıyorsunuz.

Bir uygulama için IP adresine ihtiyacımız var diyelim. Bir kaç farklı yöntemle yapabiliriz. En basitinden aşağıdaki gibi yapabiliriz.

       IPHostEntry ipEntry = Dns.GetHostByName(Dns.GetHostName());
       IPAddress[] addr = ipEntry.AddressList;

addr[]’nin içinde döndüğümüz zaman bize sırayla IP adreslerini verecektir. İstediğimiz IP adreslerine bu şekilde ulaşmış olsakta, Vista gibi IPv6 protokolünü de destekleyen sistemlerde bu kod tam olarak istediğimiz gibi işimizi görmeyebilir. Daha doğrusu farklı protokoller ile çalışan network arayüzlerinin desteklendiği hiç bir sistemde işimizi tam olarak görmez. Bundan dolayı IPAddress’lerin AddressFamily özelliğini kontrol etmemiz lazım. IPv4 protokolünün AddressFamily’de ki karşılığı InterNetwork. Yani addr[] içinde dönerken aşağıdaki gibi bir kontrol yapmamız gerekmekte.

            for (int i = 0; i < addr.Length; i++)
            {
                if (addr[i].AddressFamily == AddressFamily.InterNetwork)
                {
                    //Bir şeyler yap
                }
            } 

Bu şekilde IPv4 protokolüne uygun IP adreslerini almış olduk.

,

Şu sıralar özelleştirilmiş kontroller yaratmakla uğraşıyorum. Bu konu dahilinde bir kaç şey paylaşma gereği duydum. ASP.NET ile özelleştirilmiş kontroller geliştirmek için .NET Framework’ü bize bir çok sınıf ve metod sunuyor. Bundan bahsetmeye gerek yok sanırım. Peki bu sınıfları ve metodları en doğru şekilde nasıl kullanabiliriz?
Özelleştirilmiş bir web kontrolü yaparken, WebControl ve Control sınıflarından türetiyoruz kendi kontrolümüzü. Çünkü default olarak gelen yapılar bunlar. Ancak bazı işlerimizi kolaylaştırmak adına başka sınıflardan da yararlanabiliriz.Bu kısma daha sonra tekrardan değineceğim.
Özelleştirmiş olduğumuz kendi web kontrolümüzü yarattıktan sonra, bu web kontrolümüze,içinde kullanacağımız diğer kontrollerimizi ekleriz; yani genellikle bu şekilde bir yaklaşım olur. Control ağacına, Controls.Add(Control c) şeklinde ekleyeceğimiz kontroller ile kendi özelleştirilmiş kontrolümüze bu diğer kontrolleri eklemiş oluruz. Bu işlemi CreateChildControls() methodunu override ederek yapmak en doğru yaklaşım olacaktır. ASP.NET sayfası çalıştığı zaman belli metodlar belli bir sıra ile çalışır. CreateChildControls()’da bu sırada yer almaktadır ve çalışması gerektiği zaman çalışır. Bu zamanı .NET Framework’ü bildiği için bu görevi tamamen onun üzerine yıkmak, controllerin durumları ve ViewState için en doğru yaklaşım olacaktır.

protected override void CreateChildControls(){
                     Controls.Clear(); //Öncesinde control ağacımızı temizlemekte fayda var.
                     ……… //Diğer kontrolleri yaratabiliriz…
}

Devam…