2 using System.Configuration;
5 class Program : MarshalByRefObject
7 static void Main (string [] args)
9 AppDomainSetup setup = new AppDomainSetup ();
11 string basedir = AppDomain.CurrentDomain.BaseDirectory;
12 setup.ConfigurationFile = Path.Combine (AppDomain.CurrentDomain.BaseDirectory,
15 AppDomain domain = AppDomain.CreateDomain ("test",
16 AppDomain.CurrentDomain.Evidence, setup);
22 p = GetRemote (domain);
23 Assert.AreEqual (Path.Combine (basedir, "t46.exe.config2"),
24 p.GetFilePath (string.Empty), "#A1");
25 Assert.AreEqual ("Hello World2!",
26 p.GetSettingValue (string.Empty, "hithere"), "#A2");
27 Assert.AreEqual (Path.Combine (basedir, "t46.exe.config2"),
28 p.GetFilePath ((string) null), "#A3");
29 Assert.AreEqual ("Hello World2!",
30 p.GetSettingValue ((string) null, "hithere"), "#A4");
34 c = p.OpenExeConfiguration (string.Empty);
35 Assert.AreEqual (Path.Combine (basedir, "t46.exe.config"),
37 Assert.AreEqual ("Hello World!",
38 c.AppSettings.Settings ["hithere"].Value, "#B2");
39 c = p.OpenExeConfiguration ((string) null);
40 Assert.AreEqual (Path.Combine (basedir, "t46.exe.config"),
42 Assert.AreEqual ("Hello World!",
43 c.AppSettings.Settings ["hithere"].Value, "#B4");
45 f = Foo.GetRemote (domain);
46 Assert.AreEqual (Path.Combine (basedir, "t46.exe.config2"),
47 f.GetFilePath (string.Empty), "#C1");
48 Assert.AreEqual ("Hello World2!",
49 f.GetSettingValue (string.Empty, "hithere"), "#C2");
50 Assert.AreEqual (Path.Combine (basedir, "t46.exe.config2"),
51 f.GetFilePath ((string) null), "#C1");
52 Assert.AreEqual ("Hello World2!",
53 f.GetSettingValue ((string) null, "hithere"), "#C2");
56 c = f.OpenExeConfiguration (string.Empty);
57 Assert.AreEqual (Path.Combine (basedir, "t46.exe.config"),
59 Assert.AreEqual ("Hello World!",
60 c.AppSettings.Settings ["hithere"].Value, "#D2");
61 c = f.OpenExeConfiguration ((string) null);
62 Assert.AreEqual (Path.Combine (basedir, "t46.exe.config"),
64 Assert.AreEqual ("Hello World!",
65 c.AppSettings.Settings ["hithere"].Value, "#D2");
67 AppDomain.Unload (domain);
69 setup = new AppDomainSetup ();
70 domain = AppDomain.CreateDomain ("test",
71 AppDomain.CurrentDomain.Evidence, setup);
73 p = GetRemote (domain);
74 Assert.AreEqual (Path.Combine (basedir, "t46.exe.config"),
75 p.GetFilePath (string.Empty), "#E1");
76 Assert.AreEqual ("Hello World!",
77 p.GetSettingValue (string.Empty, "hithere"), "#E2");
81 c = p.OpenExeConfiguration (string.Empty);
82 Assert.AreEqual (Path.Combine (basedir, "t46.exe.config"),
84 Assert.AreEqual ("Hello World!",
85 c.AppSettings.Settings ["hithere"].Value, "#F2");
87 f = Foo.GetRemote (domain);
88 Assert.AreEqual (Path.Combine (basedir, "t46.exe.config"),
89 f.GetFilePath (string.Empty), "#G1");
90 Assert.AreEqual ("Hello World!",
91 f.GetSettingValue (string.Empty, "hithere"), "#G2");
94 c = f.OpenExeConfiguration (string.Empty);
95 Assert.AreEqual (Path.Combine (basedir, "t46.exe.config"),
97 Assert.AreEqual ("Hello World!",
98 c.AppSettings.Settings ["hithere"].Value, "#H2");
100 Console.WriteLine ("configuration OK");
103 static Program GetRemote (AppDomain domain)
105 Program test = (Program) domain.CreateInstanceAndUnwrap (
106 typeof (Program).Assembly.FullName,
107 typeof (Program).FullName, new object [0]);
111 public string GetFilePath (string exePath)
113 Configuration config = ConfigurationManager.OpenExeConfiguration (exePath);
114 return config.FilePath;
117 public Configuration OpenExeConfiguration (string exePath)
119 return ConfigurationManager.OpenExeConfiguration (exePath);
122 public string GetSettingValue (string exePath, string key)
124 Configuration config = OpenExeConfiguration (exePath);
125 return config.AppSettings.Settings [key].Value;