Membaca file konfigurasi (app.config) dari aplikasi yang berbeda (Studi kasus : Visual Inheritance)

VB - .NET Framework , Posted at : Jul/28/2007  
2622 Views   2 Comments

Mungkin selama ini kita biasanya selalu membaca file konfigurasi yang ada di dalam project yang bersangkutan. Bagaimana caranya kalau ternyata file konfigurasi tersebut berada di dalam project (assembly) yang berbeda? Contoh kasusnya seperti apa?

Misalkan saya punya dua buah project. Project pertama merupakan sebuah windows application project yang Application Type nya saya rubah ke Class Library (.dll). Tujuan dari perubahan Application Type ini ke Class Library yaitu agar nantinya project win app lainnya dapat melakukan referensi ke dll yang dihasilkan oleh project ini, dimana di dalam project pertama ini hanya berisi sebuah windows form yang akan digunakan sebagai template form lainnya (kalau di asp.net 2.0 mungkin bisa kita asosiasikan dengan Master Page). Fitur ini dikenal dengan Visual Inheritance.

Form yang ada di project pertama ini terdapat sebuah label untuk digunakan sebagai judul dari form yang akan digunakan. Nah untuk BackColor dan ForeColor property dari label tersebut diatur oleh setting yang terdapat didalam file app.config project lain yang menggunakan form ini. Jadi warnanya tidak statik, bisa kita rubah dengan warna yang diinginkan. Kalau kita tidak melakukan hal seperti ini maka setiap kali warna background dan warna hurufnya ingin kita rubah maka kita harus lakukan perubahan secara manual di project pertama ini lalu build ulang, dan juga kita lakukan rebuild untuk project yang menggunakan form master ini.

Project kedua merupakan sebuah win app yang akan menggunakan form master yang telah dibuat di project pertama. Hal ini dilakukan agar semua form memiliki tampilan yang konsisten. Berikut langkah-langkahnya:

1. Buat sebuah windows application project, beri nama misalnya MasterForm.

2. Rename form yang ada menjadi MasterForm. Desain tampilan form seperti ini :

3. Tambahkan code dibawah ini di event handler Load (My.Application.Info.AssemblyName akan membaca nama assembly dari project yang menggunakan form ini). Perhatikan bahwa warna background dan warna huruf label ditentukan oleh setting yang ditetapkan di file app.config project lain.

   1:  Imports System.Configuration
   2:   
   3:  Public Class MasterForm
   4:   
   5:      Private Sub MasterForm_Load(ByVal sender As Object, _
   6:      ByVal e As System.EventArgs) Handles Me.Load
   7:   
   8:          Dim exeConfigExternal As New ExeConfigurationFileMap
   9:          exeConfigExternal.ExeConfigFilename = _
  10:          My.Application.Info.AssemblyName & ".exe.config"
  11:   
  12:          Dim config As Configuration = _
  13:          ConfigurationManager.OpenMappedExeConfiguration( _
  14:          exeConfigExternal, ConfigurationUserLevel.None)
  15:   
  16:          Me.lblCaption.BackColor = Color.FromName( _
  17:          config.AppSettings.Settings("CaptionBackColor").Value)
  18:          Me.lblCaption.ForeColor = Color.FromName( _
  19:          config.AppSettings.Settings("CaptionForeColor").Value)
  20:   
  21:      End Sub
  22:   
  23:  End Class

4. Rubah ApplicationType dari project ini ke Class Library :

5. Buat sebuah windows application lainnya. Tambahkan form baru, lalu pilih Inherited Form :

6. Pilih MasterForm yang telah dibuat pada project pertama :

7. Ketika anda buka form yang bersangkutan akan muncul error. Error tersebut karena ada nya pembacaan file app.config yang seharusnya dibaca ketika runtime. Akan tetapi error tersebut hanya terjadi ketika design time saja. Ketika di run tidak masalah. Jadi kalau selama masih dalam fase develop sebaiknya anda beri comment saja code yang dibuat di langkah ke-3. Sebelum di deploy anda uncomment lagi, lalu build ulang.

8. Rubah text caption label form yang baru saja ditambahkan (di project yang kedua), misal seperti ini :

9. Tambahkan setting berikut di file app.config (project kedua) :

   1:  <configuration>
   2:      <appSettings>
   3:          <add key="CaptionBackColor" value="Gray"/>
   4:          <add key="CaptionForeColor" value="Orange"/>
   5:      </appSettings>
   6:      .....

10. Build kedua project tersebut, lalu jalankan, dan hasilnya akan seperti ini :

11. Untuk merubah warna background dan hurufnya kita tinggal merubah setting nama warna yang ada file NamaAplikasi.exe.config ketika aplikasi sudah di deploy.

 


[Comments]
made setiawan  Oct/13/2010 02:41:26 :

Terima kasih sebelumnya pak yulian, semua artikel ini sangat berguna bagi saya, saya ada pertanyaan, begini pak, bagaimana caranya membaca file.INI mis

 

berisi

[database]

user=sa

pwd=sajuga

ip=localhost

 

bagaimana caranya untuk membaca file .INI

 

terima kasih sebelumnya

 

n/b pak

ini email saya made.setiawan@gmail.com, kalau bisa di reply ke email.

Rully  Oct/13/2010 03:20:31 :

made > sama-sama mas...file .ini sebenarnya file text biasa dan bisa dibuka dengan text editor biasa seperti Notepad, sehingga untuk membacanya juga cukup dengan teknik pembacaan file .txt seperti biasa...

Mudah-mudahan membantu.


[Write your comment]
Name (required)
Email (required-will not published)
 
Comment

5184
Input code above below (Case Sensitive) :
About Me 
Rully Yulian MF
My Name is Rully Yulian Muhammad Firmansyah. I am an IT Trainer, IT Consultant and Application Developer spesializing in Microsoft .NET technology and SQL Server database. I live in Bandung, Indonesia. My hobby is to play Guitar. [Read More...]
Top Download 
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 3175 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 2592 times  
Mapping Hak Akses User Pada MenuStrip Sampai Control Button : Downloaded 2180 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 2127 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 1806 times  
Article Category 
Links 
Award 
Certifications 
MOS 2007
MCAS
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise 
Follow Me 
Facebook   LinkedIn   Twitter
Syndication 
Hosted By 
Native Enterprise News