Index: Core/Common/src/Core.Common.Assembly/AssemblyResolver.cs =================================================================== diff -u -r48814d5ba84cbc9db0d6b1b835e603da18d36357 -rf0b103a6b49b09ffb3ff42970b6a5e9a96c0d910 --- Core/Common/src/Core.Common.Assembly/AssemblyResolver.cs (.../AssemblyResolver.cs) (revision 48814d5ba84cbc9db0d6b1b835e603da18d36357) +++ Core/Common/src/Core.Common.Assembly/AssemblyResolver.cs (.../AssemblyResolver.cs) (revision f0b103a6b49b09ffb3ff42970b6a5e9a96c0d910) @@ -1,4 +1,4 @@ -// Copyright (C) Stichting Deltares 2019. All rights reserved. +// Copyright (C) Stichting Deltares 2019. All rights reserved. // // This file is part of Riskeer. // @@ -154,21 +154,6 @@ } /// - /// Resets the . - /// - /// - /// After performing this method, equals true. - /// - public static void Reset() - { - initialized = false; - - assemblyLookup = new Dictionary(); - - AppDomain.CurrentDomain.AssemblyResolve -= LoadFileFromAssemblyLookup; - } - - /// /// Gets the "Application" directory, containing all built-in and standalone assemblies. /// /// The full path to the "Application" directory. @@ -201,7 +186,7 @@ private static System.Reflection.Assembly LoadFileFromAssemblyLookup(object sender, ResolveEventArgs args) { - string assemblyName = args.Name.Contains(",") + string assemblyName = args.Name.Contains(",") ? args.Name.Substring(0, args.Name.IndexOf(',')) : args.Name; Index: Core/Common/test/Core.Common.Assembly.Test/AssemblyResolverTest.cs =================================================================== diff -u -r5e9bdc240bbe3ce6aab0620b08503654b08e3e69 -rf0b103a6b49b09ffb3ff42970b6a5e9a96c0d910 --- Core/Common/test/Core.Common.Assembly.Test/AssemblyResolverTest.cs (.../AssemblyResolverTest.cs) (revision 5e9bdc240bbe3ce6aab0620b08503654b08e3e69) +++ Core/Common/test/Core.Common.Assembly.Test/AssemblyResolverTest.cs (.../AssemblyResolverTest.cs) (revision f0b103a6b49b09ffb3ff42970b6a5e9a96c0d910) @@ -26,82 +26,107 @@ namespace Core.Common.Assembly.Test { [TestFixture] + [Serializable] public class AssemblyResolverTest { private string validAssemblyDirectory; + private AppDomain appDomain; - [OneTimeSetUp] - public void OneTimeSetUp() + [SetUp] + public void SetUp() { - AssemblyResolver.Reset(); // Reset any initialization by other test projects - - validAssemblyDirectory = Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location).FullName; + appDomain = AppDomain.CreateDomain(nameof(AssemblyResolverTest), AppDomain.CurrentDomain.Evidence, + AppDomain.CurrentDomain.SetupInformation); } [TearDown] public void TearDown() { - AssemblyResolver.Reset(); + AppDomain.Unload(appDomain); } [Test] public void RequiresInitialization_AssemblyResolverNotInitialized_ReturnsTrue() { - // Call - bool requiresInitialization = AssemblyResolver.RequiresInitialization; + // Setup + appDomain.DoCallBack(() => + { + // Call + bool requiresInitialization = AssemblyResolver.RequiresInitialization; - // Assert - Assert.IsTrue(requiresInitialization); + // Assert + Assert.IsTrue(requiresInitialization); + }); } [Test] public void RequiresInitialization_AssemblyResolverInitialized_ReturnsFalse() { // Setup - AssemblyResolver.Initialize(validAssemblyDirectory); + appDomain.DoCallBack(() => + { + AssemblyResolver.Initialize(validAssemblyDirectory); - // Call - bool requiresInitialization = AssemblyResolver.RequiresInitialization; + // Call + bool requiresInitialization = AssemblyResolver.RequiresInitialization; - // Assert - Assert.IsFalse(requiresInitialization); + // Assert + Assert.IsFalse(requiresInitialization); + }); } [Test] public void Initialize_AssemblyResolverAlreadyInitialized_ThrowsInvalidOperationExceptionAndLeavesAssemblyResolverInitialized() { // Setup - AssemblyResolver.Initialize(validAssemblyDirectory); + appDomain.DoCallBack(() => + { + AssemblyResolver.Initialize(validAssemblyDirectory); - // Call - void Call() => AssemblyResolver.Initialize(validAssemblyDirectory); + // Call + void Call() => AssemblyResolver.Initialize(validAssemblyDirectory); - // Assert - var exception = Assert.Throws(Call); - Assert.AreEqual("Cannot initialize the assembly resolver more than once.", exception.Message); - Assert.IsFalse(AssemblyResolver.RequiresInitialization); + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("Cannot initialize the assembly resolver more than once.", exception.Message); + Assert.IsFalse(AssemblyResolver.RequiresInitialization); + }); } [Test] public void Initialize_InvalidAssemblyDirectory_ThrowsDirectoryNotFoundExceptionAndLeavesAssemblyResolverStillRequiringInitialization() { - // Call - void Call() => AssemblyResolver.Initialize("Invalid"); + // Setup + appDomain.DoCallBack(() => + { + // Call + void Call() => AssemblyResolver.Initialize("Invalid"); - // Assert - var exception = Assert.Throws(Call); - Assert.AreEqual("Cannot find the directory 'Invalid'.", exception.Message); - Assert.IsTrue(AssemblyResolver.RequiresInitialization); + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("Cannot find the directory 'Invalid'.", exception.Message); + Assert.IsTrue(AssemblyResolver.RequiresInitialization); + }); } [Test] public void GetApplicationDirectory_Always_ReturnsApplicationDirectory() { - // Call - string applicationDirectory = AssemblyResolver.GetApplicationDirectory(); + // Setup + appDomain.DoCallBack(() => + { + // Call + string applicationDirectory = AssemblyResolver.GetApplicationDirectory(); - // Assert - StringAssert.EndsWith("Application", applicationDirectory); + // Assert + StringAssert.EndsWith("Application", applicationDirectory); + }); } + + [OneTimeSetUp] + public void OneTimeSetUp() + { + validAssemblyDirectory = Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location).FullName; + } } } \ No newline at end of file