C# Debug ve Release Farkı

emrah bozkurt

Kilopat
Katılım
1 Aralık 2014
Mesajlar
241
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar merhaba.

Okulun yemekhanesine manyetik kartlı geçiş sistemi yaptım. Programın ufak tefek eksikleri kaldı.
Ancak ilginç bir hata ile karşılaştım. Programı debugda derleyince yaptığım son değişiklikleri göremiyorum ancak release'e alıp derleyince düzgün çalışıyor. Daha ayrıntılı anlatmak gerekirse; picturebox3'te bulunan resmi formun loadında visible özelliği ile gösterme diyorum. Debug ile derlediğimde resim yine görünüyor. Fakat release alıp derlediğimde resim görünmüyor. Nasıl çözerim debug moddaki bu sıkıntıyı?
 
Son düzenleyen: Moderatör:
Pek bilmesem de Debug proje geliştirilirken, Release ise projenin bitip kullanıcıya sunulurken derleme yapılır. Release'de kodlar daha optimize halde oluyor.
 
Pek bilmesem de Debug proje geliştirilirken, Release ise projenin bitip kullanıcıya sunulurken derleme yapılır. Release'de kodlar daha optimize halde oluyor.
O konuda sıkıntı yok niye kullanıldığını biliyorum ancak niye debug'da çalışmayan program release'de sıkıntısız çalışıyor. Gereksiz kodlar varda debug'da optimizasyon sıkıntısı mı oluyor? Kodları gözden mi geçirmem gerekiyor? Teşekkür ederim ilginiz için...
 
Ben projenin tamamı olmadığı için kodu çalıştırmadım ama Anasayfa load kısmında bu komutu yazmışsınız. Visible özelliği ile gösterme diyorum demiştiniz.
Kod:
pictureBox3.Visible = true;

Ayrıca TextBox Changed olayında yazı boşsa resmi görünür yapmışsınız. Bu olay program ilk çalıştığında kendiliğinden tetiklenebilir ve yazı da boş olduğu için resmi gösterebilir. Bence textboxchanged olayını takip etmeyi Winforms'a bırakmak yerine siz istediğiniz zaman başlatın ve farkı gözlemleyin. Sonuçta kendiliğinden görünür oluyorsa debug yaparken bu noktalara breakpoint koyup gözlem yapıp ne gibi değişiklik olduğunu gözlemleyebilirsiniz.

Son olarak benden size tavsiye Winforms'ta böyle şeylerle uğraşmak yerine biraz vaktinizi ayırıp Xaml ile WPF programlamayı öğrenin. Her seferinde arayüzdeki visibility gibi şeyleri değiştirmek yerine binding yöntemi ile bir değişkene bağlarsınız. O değişken değiştiğinde otomatik olarak resim de görünür ve ya gizlenir. O değişken ise veri üzerinde işlem yapan ara katman ViewModel'de belirtilir. Kodunuz daha derli toplu olur, bu tarz kodlarla dolup taşmaz. Tabi dezavantajları da var dönüştürücü kullanmanız gerekiyor. Bool to Visibility gibi.

Ayrıca label'ları tek tek gizlemek yerine label'ı içinde barındıran bir konteyneri görünmez hale getirmek daha mantıklı bir tercih olabilir.

Kod:
            label5.Visible = false;
            label1.Visible = false;
            label2.Visible = false;
            label6.Visible = false;
            label11.Visible = false;
            label7.Visible = false;
            label12.Visible = false;
 
Son düzenleme:
Ben projenin tamamı olmadığı için kodu çalıştırmadım ama Anasayfa load kısmında bu komutu yazmışsınız. Visible özelliği ile gösterme diyorum demiştiniz.
Kod:
pictureBox3.Visible = true;

Ayrıca TextBox Changed olayında yazı boşsa resmi görünür yapmışsınız. Bu olay program ilk çalıştığında kendiliğinden tetiklenebilir ve yazı da boş olduğu için resmi gösterebilir. Bence textboxchanged olayını takip etmeyi Winforms'a bırakmak yerine siz istediğiniz zaman başlatın ve farkı gözlemleyin. Sonuçta kendiliğinden görünür oluyorsa debug yaparken bu noktalara breakpoint koyup gözlem yapıp ne gibi değişiklik olduğunu gözlemleyebilirsiniz.

Son olarak benden size tavsiye Winforms'ta böyle şeylerle uğraşmak yerine biraz vaktinizi ayırıp Xaml ile WPF programlamayı öğrenin. Her seferinde arayüzdeki visibility gibi şeyleri değiştirmek yerine binding yöntemi ile bir değişkene bağlarsınız. O değişken değiştiğinde otomatik olarak resim de görünür ve ya gizlenir. O değişken ise veri üzerinde işlem yapan ara katman ViewModel'de belirtilir. Kodunuz daha derli toplu olur, bu tarz kodlarla dolup taşmaz. Tabi dezavantajları da var dönüştürücü kullanmanız gerekiyor. Bool to Visibility gibi.

Ayrıca label'ları tek tek gizlemek yerine label'ı içinde barındıran bir konteyneri görünmez hale getirmek daha mantıklı bir tercih olabilir.

Kod:
            label5.Visible = false;
            label1.Visible = false;
            label2.Visible = false;
            label6.Visible = false;
            label11.Visible = false;
            label7.Visible = false;
            label12.Visible = false;

Öncelikle ayrıntılı desteğiniz ve vakit ayırıp kodları incelediğiniz için çok teşekkür ederim. Load'da ki picturebox ı debug ı denemek için koymuştum, true false yaparak sonucu görmek için. Label'lar ile söylediğiniz mantıklı geldi uygulayacağım. Textchanged olayına gelince, pc ye manyetik okuyucu bağlı ve manyetik kartı okutunca 8-10 hanelik id_no'yu textbox'a alıyor ve change olayı devreye girip koşullar ve veritabanı ile ilgili işlemler devreye giriyor. Bunları da timer2 ye bağladım, 5 sn sonra textbox'i sıfırlıyor yeni kartı okumayı bekliyor. Breakpoint'le izleyeceğim.

Vakit ayırıp Xaml ve WPF'ye baktım, xml'e benziyor sanırım Xaml, üzerine çalışmak gerekiyor. Söylediğiniz yöntemler daha profesyonelce.

Tekrar teşekkürler, dediklerinizi uygulayıp sonucu paylaşacağım, çocuk olunca sürekli vakit ayıramıyorum uyusun ilk işim bilgisayarın başına koşmak. İyi akşamlar.
 
Azimli birisine benziyorsunuz. Hazırladığınız bilgisayar kasası gayet güzel olmuş. Wpf ve xaml öğrenebilirsiniz diye düşünüyorum. Alıştıktan sonra Winforms işkence gibi gelir.
 
Uyarı! Bu konu 9 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı