public static int Main() { string original_domain = AppDomain.CurrentDomain.FriendlyName; AppDomain ad = AppDomain.CreateDomain("subdomain"); try { TestOutput remoteOutput = (TestOutput)ad.CreateInstanceAndUnwrap( typeof(TestOutput).Assembly.FullName, "TestOutput"); remoteOutput.ThrowUnserializable(); } catch (SerializationException) { Console.WriteLine("Caught serialization exception"); } catch (Exception) { Console.WriteLine("Caught other exception"); Environment.Exit(1); } finally { Console.WriteLine("Finally in domain {0}", AppDomain.CurrentDomain.FriendlyName); if (original_domain != AppDomain.CurrentDomain.FriendlyName) { Environment.Exit(2); } AppDomain.Unload(ad); } Console.WriteLine("All OK"); return(0); }