392. Using AppDomains in order to load a different app.config

בהמשך לפעם הקודמת שהייתה לפני הרבה זמן,

השימוש הראשון של AppDomain שנדבר עליו הוא הצורך הבא:

כאשר אפליקציה עולה היא טוענת קובץ app.config באופן דיפולטי:

  • לפי השם של הExecutable שמריץ את האפליקציה בתוספת config. (למשל MyApplication.exe.config).
  • לפי web.config במידה ואנחנו מוארחים בIIS

לפעמים עולה לנו צורך להעלות את האפליקציה שלנו עם app.config שונה מהapp.config הדיפולטי.

לדוגמה, האפליקציה WcfSvcHost.exe מקבלת בתור פרמטרים את הPath לdll של הService שאנחנו רוצים להריץ ואת הapp.config של הService שאנחנו מעוניינים להריץ. (זה מה שרץ כאשר אנחנו מריצים Wcf Service Library)

הנתון של הקובץ app.config שאיתו האפליקציה שלנו עובדת קשור לAppDomain שלנו וניתן לגשת אליו ככה:

1
2
string path =
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;

כך אנחנו ניגשים לקובץ הקונפיגורציה של הAppDomain הנוכחי.

במידה ואנחנו מעוניינים שהאפליקציה שלנו תעבוד עם קובץ קונפיגורציה אחר, נוכל לעשות זאת ע"י פתיחת AppDomain חדש:

1
2
3
4
5
6
7
8
AppDomainSetup appDomainSetup = new AppDomainSetup();
appDomainSetup.ConfigurationFile = path;
AppDomain newAppDomain =
AppDomain.CreateDomain("MyNewAppDomain",
AppDomain.CurrentDomain.Evidence,
appDomainSetup);

כאן יצרתי AppDomain חדש שמשתמש בקובץ קונפיגורציה שמצוין במשתנה path.

אני לא מראה כרגע איך לבצע פעולות בAppDomain זה. יש לזה מספר שיטות ונדבר עליהן בהמשך.

סוף שבוע ממקום לא צפוי טוב

שתף