Tags: , | Categories: SSS (FAQ), Tip, Web Uygulaması Posted by okutbay on 11.10.2018 18:56 | Yorumlar (0)

Selamlar herkese,

Sanırım bir başlığı açmam gerekecek. ASP.NET Core MVC ile geliştirdiğim web uygulamasını nasıl güncelleyiyorum? Size bu yazımda biraz bundan bahsetmek istiyorum.

Geliştirme ortamı olarak Visual Studio 2017 kullanıyorum ancak Visual Interdev'den bu yana çok uzun yıllardır burada pek bir değişiklik olmadı. O yüzden gelecekte de köklü bir değişiklik beklemiyorum.

Öncelikli olarak kendi geliştirme ortamınızda değişikliklerinizi yaptınız. Varsa testlerinizi çalıştırdınız, yoksa kodunuzun işlevlerini fonksiyonel olarak test ettiniz, her şeyin olması gibi çalıştığına kanaat getirip canlı ortamdaki uygulamanızı güncellemeye karar verdiniz.

Şimdi size adım adım izlediğim yolu ve püf noktalarını vermeye çalışacağım.

Sahnenin Kurulması

Daha önce bir ya da bir kaç release çıktığım bir projeyi güncelleyeceğim. O yüzden sistemde hazırlanmış release dosyaları olması muhtemel. Hatta başka projeler de olabilir. O nedenle ben şöyle bir klasör yapısı kullanmayı uygun görüyorum: "C:\Projeler\Release\ProjeAdi\UygulamaAdi"

Örnek ile açıklamam gerekirsetüm kaynak kodları C:\Projeler altında dururken tüm çıktığım paketleri C:\Projeler\Release klasörü altında topluyorum. Ancak bunu yaparken de bir proje altında birden fazla deploy edilmesi gereken web uygulaması, API vb. olabileceği için proje adıyla açtığım klasörün altında da ürün ya da uygulama adıyla açılmış bir klasör içine publish ediyorum. Mesela bugün URLSohertener adlı projenin URLShortener.Web uygulamasını güncelleyeceğim için bu uygulamaya publish çıkacağız.

Publish edilecek folder ve üst folder içinde şu an bulunan dosyalar şunlar:

 

Görüldüğü üzere uygulama adının yanında tarihler yazan bazı rar dosyalar var. Bunlar önceki çıkılan publishlerin sıkıştırılmış yedekleri. Ben yöntem olarak çıktığım her release paketini sıkıştırılmış ve tarihlenmiş olarak saklıyorum. Tarihler neden önemli birazdan göreceğiz.

Not: Tabi ki CI/CD ile yapmak çok şık olur ama bireysel olarak bir şeyler yapmaya çalışırken her şeyi dört dörtlük yapmaktan önce ortaya birşeyler (MVP - Minimum Viable Product) çıkartıp insanların kullanımına sunmak daha öncelikli bir hal alıyor.

 

Publish (Release) Çıkılması

Visiual Studio ile açık olan solution üzerinde publish yapılacak projeadı üzerine faremizle ters tıklayarak combo menünün açılmasını sağlarız.

 
Açılan kombo menü üzerinde "Publish" seçeneğine tıklayarak projeye ait daha oluşturulmuş publish profil detaylarının görüntülendiği ekran çıkacaktır.
 
 
 
Ekran görüntüsünde görüleceği üzere burada publish profil adı ve publish butonun dışında nereye publish yapılacağı, mevcut dosyaların silinip silinmeyeceği, yapılacak publish için debug/release konfigurasyonu bulunmakta.
Her zaman bu ekran üzerinde yeni bir profil tanımlayabileceğiniz gibi actions altından profil adını değiştirme ve profil silme işlemini yapabilirsiniz. Mevcut profil ayarlarını değiştirmek isterseniz "Configure..." bağlantısına tıklamanız yeterli olacaktır. Bu ekranda target locatio'a gitmek isterseniz tıklanabilir bir link konulmamış ama yolu clipboarda kopyalayabilmeniz için ufak bir buton eklenmiş.
 
Daha önce publish yapmadıysanız ilk seferde buradaki detayları ayarlamanız gerekebilir. O yüzden "Configure..." bağlantısına tıklayarak nasıl bir şeyle karşılacağınızı biraz anlatmak istiyorum.
 
 
Bağlantıya tıkladığınızda açılan popup ekranda sizi "Connection" ayarları karşılar.Bu ayarlar Publish Method ve Target Location ayarlarıdır.
 
Bu ayarlar içinde Publish method ile 4 farklı metoddan birini seçebilirsiniz.
 
 
Hepsinin detaylarına giremeyiz ama isimleri aslında ne olduklarını anlatıyor.
 
Biz "File System" seçiyoruz. Dosyaları harddiskimizde belirlediğimiz yere (Target Location) bırakmasını isteyeceğiz. Target Location ayarında yukarıda ayarladığımız klasörlerin seçili olduğunu göreceksiniz. 
 
Next butonuna tıklayarak sonraki ayar ekranına geçebiliriz. Bu ekranda bizi karşılayan ayarlar Configuration, Target Framewok, Deployment Mode, Target Runtime, File Publish Options, Database ayarları bulunmakta
 
 
 
Burada işler biraz karışıyor. Bu ekran gerçekten ne yaptığınızı bilmenizi gerektiren bir ekran. Bu nedenle bu ayarlara biraz daha detaylı bakalım.
Configuration (Debug/Release): Burada Release/Debug seçimi yaparak derlenecek dosyalaradebug yapmanızı kolaylaştıran ilavelerin yapılıp yapılmayacağına karar verirsiniz. Test ortamları dışında canlı ortamlara yapılacak publishler için kesinlikle "Release"seçilmelidir. Çünkü debug yapılacak şekilde derlenen kodların performansı daha düşük olacak ve canlı ortamda gereksiz performans kayıplarına neden olacaktır.
Target Framewok: Açıkçası burada sadece sistemde yüklü olan frameworkler listeleniyor mu yoksa sadece uygulamanın frameworkü mü listeleniyor bilmiyorum. Yani uygulamayı desteklenen farklı frameworkler release edebiliyor muyum fikrim yok. Muhtemelen sadece uyumlu olanı listeliyor. Çünkü sistemimde .NET Framework 4.7.2 olduğu biliyorum ama burada çıkmıyor.
Deployment Mode (Framework-dependent/Self-Contained): Bunu incelemedim ama isimlerinden anladığım kadarıyla self-contained seçildiği zaman gerekli framework dosyalarını da içerecek şekilde pakete ekliyor ve paketi şişiriyor diye tahmin ediyorum. O yüzden kurulum yapacağım sunucuda framework olduğu için ben Framework-dependent olarak ayarlıyorum.
Target Runtime (Portable/win-x86/win-x64/osx-x64/linux-x64): Burada kurulum yapılacak sunucun işletim sistemi ve işlemci mimarisine göre karar verebilirsiniz ya da benim gibi portable seçerek herhangi bir işletim sisteminde çalışacak şekilde paketinizi oluşturabilirsiniz. Paketiniz şimesin benim tek platform ile işim olur diyorsanız portable yerine onu seçmeniz önerilir.
File Publish Options: İşaretleyerek önceki publishe ait dosyaları silerek temiz bir klasör içine publish çıkılmasını sağlayabilirsiniz. Ben genelde bunu işaretliyorum. Değişen giden bir kütüphane, dosya vb. var ise paketin içinde kalmaya devam ederek şişkinlik yapsın istemiyorum.
Database: Eğer projenizde SQL server vb. ayarlanmış bir database var ise onunla ilgili bir bilgi veriyor. Ben MongoDB kullandığım için ne işe yarar, ne çıkar burada bir fikrim yok.
 
Temel konulara değindiğimize göre atrık publish butonuna tıklayabilir ve publish işleminin tamamlanmasını bekleyebiliriz. İlerlemeyi Web Publish Activity ekranında takip edebilirken, olup biteni detaylı olarak görmek için "Output" ekranına göz atabiliriz.
 
 
 
 
Evet publish'i çıktık ve deploymen aşamasına geçebilir dosyaları sunucuya atarak canlı ortamdaki yazılımın güncellenmesini sağlayabiliriz.
 
 
 

 

Deployment: Tam (Full) veya kısmi (parital)?

Publish sonunda projenin çalışması için gerekli tüm dosyaları dosya sisteminde oluşturduk.Bunların hepsini sunucuya kopyalabileceğiniz gibi sadece son deploymenttan sonra değişen dosyaların kopyalanmasını (partial deployment) terich edebilirsiniz.
 
Eğer partial deployment yapmaya karar verirseniz işte bu noktada hatırlarsanız yukarıda "Ben yöntem olarak çıktığım her release paketini sıkıştırılmış ve tarihlenmiş olarak saklıyorum. Tarihler neden önemli birazdan göreceğiz. " demiştim. Daha önce yapılmış olan deployment paketlerini sakladığım için son deployment tarihini hatırlamak gibi bir dertten kurtulmuş oluyorum.
 
Dosyaları publish ettim klasördeyken arama kutusuna şunu yazıyorum "datemodified:<={son-paket-tarihi}". Eğer yedekler içindeki en günce paket tarihi 31 Ağustos 2018 ise şu şekilde yazıyorum "datemodified:‎<=31.‎08.‎201".Böylece dosya sistemim benim için bu tarih dahil olacak şekilde eski dosyaları göstermiş oluyor. Tek yapmanız gereken listelenmiş dosyaları seçerek silmek ve sadece son deploymenttan bu yana değişmiş olan dosyaların kalmasını sağlamak
 
 
 
BONUS: Aynı günde yapılan farklı deployment durumlarında tarih yanına saat de yazabilirsiniz. Örnek: datemodified:‎<11.‎10.‎2018 13:00
 
Artık son adım olarak bu pakete dahil olan dosyaları klasörü ile sıkıştırıp, dosya adına tarih ekleyerek yedek olarak bir kenarda durmasını sağlarız.
 
Bu dosyayı aynı zamanda sunucumuza dosyaları kopyalamak için de kullanacağız.
 

Son Adım

Oluşturduğumuz publish dosyasını sunucumuza taşırız. Burada ister FTP yap, ister RDP o dosya sunucuna kopyalansın yeterki :D
Sonrasında ben şu adımları izliyorum. Bir tane deployment klasörüm var. Sıkıştırılmış dosya içeriklerini buraya açıyorum.
Publish yapılacak web uygulamasının bulunduğu klasörü her ihtimale karşı sıkıştırıp, tarih vererek yedekliyorum.
IIS kullanıyorsanız uygulamayı ve application poou durdururak kilitli dosyalar varsa bırakılmasını sağlıyoruz ki kopyalamada sorun çıkmasın.
Sonrasında deployment klasörüne açtığımız dosyaları uygulama klasöründeki dosyaları ezerek kopyalıyoruz.
Bu noktada en önemli konu eğer development için ayrı ayrı config dosyasınız yoksa ise canlı ortamdaki config dosyasınızı ezmeden varsa yeni eklenen ayarları bu dosyaya manuel olarak eklemektir.
Artık uygulamayı güncellediğimize göre tekrar IISde application pool ve uygulamayı start ediyoruz. Uygulama adresine gittiğimizde açılıyorsa ne mutlu bize. Haydi geçmiş olsun.
 
Bir başka yazımızda buluşmak üzere. Klavyeleriniz şen ola.
 
Ozan Kutlu Bayram
 
 

 
 
 
 
 
 

 
 

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , | Categories: Hata Posted by okutbay on 22.12.2011 00:55 | Yorumlar (0)

Could not load file or assembly 'your project' or one of its dependencies. The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG)) 

Başımıza gelebilecek durum,

Kontrol ettiniz, ilgili dll yerli yerinde, referens eklenmiş, web.config dosyasında yanlış bir ayar yok.

Internette aradınız, taradınız temp proje dosyalarını (*) silin dediler. Denediniz o da yemedi. Hala hatayı alıyorsunuz.

Bence bir de projenizin hedef frameworkünü kontrol edin. İlgili bileşenin desteklenmediği bir framework için derleme yapmaya çalışıyor olabilirsiniz... 

* Bu dosyalar genelde şuralarda olur

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\

Windows 7 32 bit sistemler için
C:\Users\[username]\AppData\Local\Temp\Temporary ASP.NET Files\

Windows 7 64 bit sistemler için
C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\

1 kişi tarafından 4.0 olarak değerlendirildi

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , | Categories: Hata, IDE, Tip Posted by okutbay on 14.10.2011 00:01 | Yorumlar (0)

Geçen hafta içinde yeni bir proje ekibine dahil oldum. Proje oldukça heyecanlı bir proje ama her zaman olduğu gibi bitiş tarihi belli, ne istendiği kabaca belli ama detaylar bize kalıyor... :D Ama bu yazımda bu konuyla ilgili bişiler olmayacak. Yeni projeyle beraber yaşadığım bir sorunu ve çözümünü anlatmaya çalışacağım.

 .NET frameworkü ilk versiyonundan beri kullanırım, Visual studio ise Visual Interdev zamanlarindan bu yana aktif kullandığım bir ürün. Hafta başında sıkıştırılmış olarak kaynak kodları ve veritabanı yedeği teslim aldım. Bir şekilde bunları çalıştırıp proje hakkında fikir sahibi olmam gerekiyordu.

Hemen veritabanı yedeğini yerel olarak bilgisayarımda buluna sql sunucusuna açtım. Oh mis. Sonra her developer gidi neymiş şu proje bağlantı cümlesini düzenliyip bakayım diye .sln dosyasına tıkladım... Ama karşıma bir mesaj çıktı... 

The project file "x" cannot be opened. Project type is not supported by this installation.

Dosya VS 2008 .sln dosyasıydı ve bu mesaj genelde VS 2005 ile web application destek güncellemesi kurulu olmadığında o biçimde yaratılmış projeleri açmaya çalıştığımızda almaya alışık olduğumuz mesajlardandı.

"Allah, Allah, çok ilginç..." diyerek dosyayı gönderen arkadaşı sorayım dedim. Developerı ortada olmayan ve bilgi alınma şansı kalmamış bir proje olduğunu söyledikten sonra "silverlight 2.0 projesi olması lazım" dedi...

Gel gelelim ben de zaten bi sürü silverlight SDK hödösü kuruluydu. Ufak bir googledan sonra Microsoft® Silverlight™ 2 Tools for "Visual Studio 2008 SP1" kurmam gerektiğini öğrendim... Ohhh dedim şimdi işin yoksa "Microsoft Visual Studio 2008 Service Pack 1" kur bi de diye hayıflandım... SP1 i kurdum sonra silverlight toolsu kurayım dedim. Ama ne mümkün. fatal error verip kurulumu kesiyordu. Sonra öğrendim ki ne kadar silverlight hedesi varsa kaldırıp öyle kurmak gerekiyormuş... SP1 kurucam diye hayıflandığıma çok pişman olmuştum... Sen miydin hayıflanan, al sana demişti şakacı bir kişilik. Uzun lafın kısası bir şekilde kurduk ve .sln dosyasını açtığımda başta yükleyemediğim 5 projeden 3ünü yüklemeyi başarabilmiştim.

Şekil 1: Başarıyla yüklenen 3 proje. 

Ama hala 2 proje saçma şekilde yüklenmiyordu.

 

Şekil 2: Proje yüklenme hatası.

"Ne ulan bu projeler" diye bir text editör ile proje dosyasına bakarak tiplerini anlamayı düşündüm. Tabi adamlar guid tutmuşlar ve bişi almadım. Nedir bunlar diye aradım ve proje tipleri normal şartlarda sahip olduğum kurulumun açması gereken cinstendi.

 

PlantDoctorDataServices.csproj

{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}

PlantDoctorWebPart.csproj

{593B0543-81F6-4436-BA1E-4747859CAAE2};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 

 

Not: Ulaştığım tablo gayet faydalı bir tablo. Buraya da koyayım lazım olur sonra

Project Type Description Project Type Guid
Windows (C#) {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Windows (VB.NET) {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
Windows (Visual C++) {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
Web Application {349C5851-65DF-11DA-9384-00065B846F21}
Web Site {E24C65DC-7377-472B-9ABA-BC803B73C61A}
Distributed System {F135691A-BF7E-435D-8960-F99683D2D49C}
Windows Communication Foundation (WCF) {3D9AD99F-2412-4246-B90B-4EAA41C64699}
Windows Presentation Foundation (WPF) {60DC8134-EBA5-43B8-BCC9-BB4BC16C2548}
Visual Database Tools {C252FEB5-A946-4202-B1D4-9916A0590387}
Database {A9ACE9BB-CECE-4E62-9AA4-C7E7C5BD2124}
Database (other project types) {4F174C21-8C12-11D0-8340-0000F80270F8}
Test {3AC096D0-A1C2-E12C-1390-A8335801FDAB}
Legacy (2003) Smart Device (C#) {20D4826A-C6FA-45DB-90F4-C717570B9F32}
Legacy (2003) Smart Device (VB.NET) {CB4CE8C6-1BDB-4DC7-A4D3-65A1999772F8}
Smart Device (C#) {4D628B5B-2FBC-4AA6-8C16-197242AEB884}
Smart Device (VB.NET) {68B1623D-7FB9-47D8-8664-7ECEA3297D4F}
Workflow (C#) {14822709-B5A1-4724-98CA-57A101D1B079}
Workflow (VB.NET) {D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8}
Deployment Merge Module {06A35CCD-C46D-44D5-987B-CF40FF872267}
Deployment Cab {3EA9E505-35AC-4774-B492-AD1749C4943A}
Deployment Setup {978C614F-708E-4E1A-B201-565925725DBA}
Deployment Smart Device Cab {AB322303-2255-48EF-A496-5904EB18DA55}
Visual Studio Tools for Applications (VSTA) {A860303F-1F3F-4691-B57E-529FC101A107}
Visual Studio Tools for Office (VSTO) {BAA0C2D2-18E2-41B9-852F-F413020CAA33}
SharePoint Workflow {F8810EC1-6754-47FC-A15F-DFABD2E3FA90}
XNA (Windows) {6D335F3A-9D43-41b4-9D22-F6F17C4BE596}
XNA (XBox) {2DF5C3F4-5A5F-47a9-8E94-23B4456F55E2}
XNA (Zune) {D399B71A-8929-442a-A9AC-8BEC78BB2433}
SharePoint (VB.NET) {EC05E597-79D4-47f3-ADA0-324C4F7C7484}
SharePoint (C#) {593B0543-81F6-4436-BA1E-4747859CAAE2}
Silverlight {A1591282-1198-4647-A2B1-27E5FF5F6F3B}

Kaynak: http://www.mztools.com/articles/2008/mz2008017.aspx

Proje tipinden bir sonuç çıkmayınca çaresizce hata mesajınını googleda arayıp alakalı olabilecek cevaplara bakmaya başladım. Kimin aklına gelirdi "<ProjectTypeGuids></ProjectTypeGuids>" tagleri arasında yazan guidleri silince projelerin yükleneceği. Benim de gelmezdi bir yerde okumasam. Sildim ve projeler şimdi yükleniyor... Patrona söylesen hayatta inanmaz böyle bişiye bir gün harcadığına... :D

Neyse projeleri yükledik ama bakalım derlenecek mi? %99 derlenmeyecek. Ama şu an mutluyum...  

 

  

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , | Categories: Library, Programlama Posted by okutbay on 23.09.2011 00:11 | Yorumlar (0)

Microsoft®, .NET Framework®'un 4.5 Developer Preview versiyonunu duyurdu. Konu hakkında detaylı bilgi ve indirme bağlantısı şöyle: 

Microsoft® .NET Framework® 4.5 Developer Preview

Download Microsoft® .NET Framework® 4.5 Developer Preview - Full

 

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , , , | Categories: Genel Posted by okutbay on 30.03.2010 10:55 | Yorumlar (0)

Bazen iki tarihin arasında geçen süreyi bulmanız gerekir. Bu kişinin şu anki yaşı olabileceği gibi bir işçinin o gün çalıştığı süre de olabilir. C# bize bu konuda yardımcı olmak için TimeSpan tipini sunar. Bu tipi kullanarak iki tarih arasında geçen süreyi farklı şekillerde alabiliriz. Örneğin iki tarih arasında kaç saat olduğunu bulmak istiyorsak TotalHours özelliğini kullanabiliriz. Eğer iki tarih arasında geçen sürenin sadece saat kısmı bizi ilgilendiriyorsa Hours özelliğini kullanabiliriz.

    1 DateTime myStartTime = Convert.ToDateTime("30.03.2010 08:04:00");

    2 DateTime myEndTime = Convert.ToDateTime("30.03.2010 18:02:00");

    3 TimeSpan myWorkingTime = myEndTime - myStartTime;

    4 double myWorkingHours = myWorkingTime.TotalHours;

Bu işi uygulamanız içinde birden çok kullanacaksanız bir method haline getirmek faydalı olacaktır.

    1 public static double GetWorkingHours(DateTime startTime, DateTime endTime)

    2 {

    3     TimeSpan workingTime = endTime - startTime;

    4     double workingHours = workingTime.TotalHours;

    5     return workingHours;

    6 }

 

bu yeni metodu soyle kullanirsiniz.

    1 DateTime myStartTime = Convert.ToDateTime("30.03.2010 08:04:00");

    2 DateTime myEndTime = Convert.ToDateTime("30.03.2010 18:02:00");

    3 double myWorkingHours = GetWorkingHours(myStartTime, myEndTime);

 

Not:Methodun ve kodun aynı classta olduğu varsayılmıştır...

Kolay gelsin...

1 kişi tarafından 1.0 olarak değerlendirildi

  • Currently 1/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , | Categories: Windows Uygulaması Posted by okutbay on 03.03.2010 15:14 | Yorumlar (0)

You develop a windows service application and installed to your machine. When you try to start service you get this error.

image

Possible reason to this error is service name definitions.

Check the service name and service installer service name. Both must be the same. For instance this is from service class.

    1 private void InitializeComponent()

    2 {

    3     components = new System.ComponentModel.Container();

    4     this.ServiceName = "DataExporter";

    5 }

 

and this code is from service installer settings

    1 //

    2 // serviceInstallerDataExporter

    3 //

    4 this.serviceInstallerDataExporter.Description = "Exports Data for SPSS as CSV file";

    5 this.serviceInstallerDataExporter.DisplayName = "x Data Exporter";

    6 this.serviceInstallerDataExporter.ServiceName = "x Data Exporter";

    7 this.serviceInstallerDataExporter.StartType = System.ServiceProcess.ServiceStartMode.Automatic;

 

P.S.: If you have multiple service instances you must be more careful

Happy coding...

1 kişi tarafından 4.0 olarak değerlendirildi

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , , , , | Categories: Programlama, SSS (FAQ), Tip Posted by okutbay on 13.11.2009 17:32 | Yorumlar (0)

Clipboard is a windows object. If you want to use clipboard in your .NET framework console applications you must reference `System.Windows.Forms` and mark your main method with `STAThreadAttribute` attribute.

Then you can use this class's methods e.g. Clipboard.SetText("some text to store in the clipboard");

Happy coding.

1 kişi tarafından 2.0 olarak değerlendirildi

  • Currently 2/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , | Categories: Tip Posted by okutbay on 12.11.2009 19:01 | Yorumlar (0)

if you are getting this exception "The type initializer for 'Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.EnterpriseLibraryFactory' threw an exception." try to reference Microsoft.Practices.ObjectBuilder2.dll

Happy coding...

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , | Categories: Genel, Uygulama Posted by okutbay on 12.11.2009 12:54 | Yorumlar (0)

We, the developers sometimes need work with different languages for some projects. Especially if you are a .NET developer you will need a conversion tool to convert C# to VB.NET or VB.NET to C#.

Here is a useful free tools for that need.

C Sharp to VB.NET

VB.NET to C Sharp

You can check other tool from Toolbox section 

 

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , | Categories: Genel Posted by okutbay on 08.10.2009 16:01 | Yorumlar (0)

According to business rule all footballer name and surname must be capitalized and not longer than 8 chars length.

Very simple to develop. We develop a wrapper method for this job. Seems working fine. Until this morning. Game masters of the http://icanfootball.com noticed that some player names violates this business rule. After my first debuging i found the problem. ToLowerInvariant method is the guilty. No, infact the developer who uses this method is guilty. Because this methods unable to convert "i" to "İ", "ı" to "I" or reverse. This chars specific to Turkish locale and this methods are invariant (means Culture Indepentend and works same as calling ToLower or ToUpper method with CultureInfo.InvariantCulture enum). 

So in my opinion this methods are useless. Please use ToLower or ToUpper method with appropriate culture info.

You can check this sample code.

 

    1 string a = "ı I ş Ş ç Ç ğ Ğ ö Ö ü Ü i İ";

    2 

    3 string b = a.ToLowerInvariant();//b = "ı i ş ş ç ç ğ ğ ö ö ü ü i İ" fails to convert

    4 string d = a.ToUpperInvariant();//c = "ı I Ş Ş Ç Ç Ğ Ğ Ö Ö Ü Ü I İ" fails to convert

    5 

    6 string culture = "tr-TR";

    7 System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo(culture);

    8 

    9 string c = a.ToLower(cultureInfo);//d = "ı ı ş ş ç ç ğ ğ ö ö ü ü i i"

   10 string e = a.ToUpper(cultureInfo);//e = "I I Ş Ş Ç Ç Ğ Ğ Ö Ö Ü Ü İ İ"

 

 

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5