Index: Application/Riskeer/src/Application.Riskeer/App.xaml.cs =================================================================== diff -u -r8866ca917e4dc8d3f6429ad1c6c7b53aabfd42db -r104d2d6389e829e9020ec8458c544c1fc5ae273d --- Application/Riskeer/src/Application.Riskeer/App.xaml.cs (.../App.xaml.cs) (revision 8866ca917e4dc8d3f6429ad1c6c7b53aabfd42db) +++ Application/Riskeer/src/Application.Riskeer/App.xaml.cs (.../App.xaml.cs) (revision 104d2d6389e829e9020ec8458c544c1fc5ae273d) @@ -22,6 +22,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Reflection; using System.Text.RegularExpressions; using System.Windows; @@ -65,9 +66,7 @@ private static void SetupAssemblyResolver() { - string assemblyDirectory = Path.Combine( - Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName, - "Application", "Built-in", "Managed"); + string assemblyDirectory = Path.Combine(GetApplicationDirectory(), "Built-in", "Managed"); Assembly GetAssemblyResolver(object sender, ResolveEventArgs args) { @@ -134,5 +133,17 @@ } } } + + private static string GetApplicationDirectory() + { + DirectoryInfo executingAssemblyDirectoryInfo = Directory.GetParent(Assembly.GetExecutingAssembly().Location); + + while (executingAssemblyDirectoryInfo.GetDirectories().All(di => di.Name != "Application")) + { + executingAssemblyDirectoryInfo = Directory.GetParent(executingAssemblyDirectoryInfo.FullName); + } + + return Path.Combine(executingAssemblyDirectoryInfo.FullName, "Application"); + } } } \ No newline at end of file Index: Core/Common/src/Core.Common.Assembly/AssemblyResolver.cs =================================================================== diff -u -r3c64407303b0747af9311ce346df9d8966971956 -r104d2d6389e829e9020ec8458c544c1fc5ae273d --- Core/Common/src/Core.Common.Assembly/AssemblyResolver.cs (.../AssemblyResolver.cs) (revision 3c64407303b0747af9311ce346df9d8966971956) +++ Core/Common/src/Core.Common.Assembly/AssemblyResolver.cs (.../AssemblyResolver.cs) (revision 104d2d6389e829e9020ec8458c544c1fc5ae273d) @@ -22,6 +22,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; namespace Core.Common.Assembly { @@ -164,6 +165,22 @@ AppDomain.CurrentDomain.AssemblyResolve -= LoadFileFromAssemblyLookup; } + /// + /// Gets the "Application" directory, containing all built-in and standalone assemblies. + /// + /// The full path to the "Application" directory. + public static string GetApplicationDirectory() + { + DirectoryInfo executingAssemblyDirectoryInfo = Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location); + + while (executingAssemblyDirectoryInfo.GetDirectories().All(di => di.Name != "Application")) + { + executingAssemblyDirectoryInfo = Directory.GetParent(executingAssemblyDirectoryInfo.FullName); + } + + return Path.Combine(executingAssemblyDirectoryInfo.FullName, "Application"); + } + private static void InitializeAssemblyLookup(string assemblyDirectory) { string[] assemblies = Directory.GetFiles(assemblyDirectory, assemblySearchPattern); Index: Riskeer/HydraRing/src/Riskeer.HydraRing.Calculation/Riskeer.HydraRing.Calculation.csproj =================================================================== diff -u -re256c94ccd3f758cf0b4d6dcb4947fce096c5f4e -r104d2d6389e829e9020ec8458c544c1fc5ae273d --- Riskeer/HydraRing/src/Riskeer.HydraRing.Calculation/Riskeer.HydraRing.Calculation.csproj (.../Riskeer.HydraRing.Calculation.csproj) (revision e256c94ccd3f758cf0b4d6dcb4947fce096c5f4e) +++ Riskeer/HydraRing/src/Riskeer.HydraRing.Calculation/Riskeer.HydraRing.Calculation.csproj (.../Riskeer.HydraRing.Calculation.csproj) (revision 104d2d6389e829e9020ec8458c544c1fc5ae273d) @@ -6,6 +6,7 @@ + Index: Riskeer/HydraRing/src/Riskeer.HydraRing.Calculation/Services/HydraRingInitializationService.cs =================================================================== diff -u -r6e9a55cd2db983034a688865e7f88fddd633326d -r104d2d6389e829e9020ec8458c544c1fc5ae273d --- Riskeer/HydraRing/src/Riskeer.HydraRing.Calculation/Services/HydraRingInitializationService.cs (.../HydraRingInitializationService.cs) (revision 6e9a55cd2db983034a688865e7f88fddd633326d) +++ Riskeer/HydraRing/src/Riskeer.HydraRing.Calculation/Services/HydraRingInitializationService.cs (.../HydraRingInitializationService.cs) (revision 104d2d6389e829e9020ec8458c544c1fc5ae273d) @@ -21,8 +21,8 @@ using System; using System.IO; -using System.Reflection; using System.Security; +using Core.Common.Assembly; using Riskeer.HydraRing.Calculation.Data; using Riskeer.HydraRing.Calculation.Data.Input; using Riskeer.HydraRing.Calculation.Providers; @@ -84,22 +84,14 @@ TemporaryWorkingDirectory = temporaryWorkingDirectory; hlcdFilePath = settings.HlcdFilePath; - string executingAssemblyLocation = Assembly.GetExecutingAssembly().Location; - string applicationFolder = GetApplicationFolder(Directory.GetParent(executingAssemblyLocation)); + string applicationFolder = AssemblyResolver.GetApplicationDirectory(); hydraRingDirectory = Path.Combine(applicationFolder, "Standalone", "Deltares", hydraRingBinariesSubDirectory); configurationDatabaseFilePath = Path.Combine(hydraRingDirectory, HydraRingFileConstants.ConfigurationDatabaseFileName); preprocessorDirectory = settings.PreprocessorDirectory; usePreprocessorClosure = settings.UsePreprocessorClosure; } - private static string GetApplicationFolder(DirectoryInfo directory) - { - return directory.Name.Contains("Application") - ? directory.FullName - : GetApplicationFolder(directory.Parent); - } - /// /// Gets the ini file path. /// Index: Riskeer/HydraRing/test/Riskeer.HydraRing.Calculation.Test/Integration/HydraRingConfigurationServiceIntegrationTest.cs =================================================================== diff -u -r09c7d08078031ad607654ebdb9578b40fce094a0 -r104d2d6389e829e9020ec8458c544c1fc5ae273d --- Riskeer/HydraRing/test/Riskeer.HydraRing.Calculation.Test/Integration/HydraRingConfigurationServiceIntegrationTest.cs (.../HydraRingConfigurationServiceIntegrationTest.cs) (revision 09c7d08078031ad607654ebdb9578b40fce094a0) +++ Riskeer/HydraRing/test/Riskeer.HydraRing.Calculation.Test/Integration/HydraRingConfigurationServiceIntegrationTest.cs (.../HydraRingConfigurationServiceIntegrationTest.cs) (revision 104d2d6389e829e9020ec8458c544c1fc5ae273d) @@ -22,7 +22,7 @@ using System; using System.Collections.Generic; using System.IO; -using System.Reflection; +using Core.Common.Assembly; using Core.Common.TestUtil; using NUnit.Framework; using Riskeer.HydraRing.Calculation.Data; @@ -38,7 +38,7 @@ [TestFixture] public class HydraRingConfigurationServiceIntegrationTest { - private static readonly string hydraRingDirectory = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"HydraRing"); + private static readonly string hydraRingDirectory = Path.Combine(AssemblyResolver.GetApplicationDirectory(), "StandAlone", "Deltares", "HydraRing"); [Test] public void WriteDatabaseCreationScript_HydraRingConfigurationWithAssessmentLevelCalculationInput_WritesExpectedCreationScript([Values(true, false)] bool runPreprocessor) Index: Riskeer/HydraRing/test/Riskeer.HydraRing.Calculation.Test/Services/HydraRingConfigurationServiceTest.cs =================================================================== diff -u -r09c7d08078031ad607654ebdb9578b40fce094a0 -r104d2d6389e829e9020ec8458c544c1fc5ae273d --- Riskeer/HydraRing/test/Riskeer.HydraRing.Calculation.Test/Services/HydraRingConfigurationServiceTest.cs (.../HydraRingConfigurationServiceTest.cs) (revision 09c7d08078031ad607654ebdb9578b40fce094a0) +++ Riskeer/HydraRing/test/Riskeer.HydraRing.Calculation.Test/Services/HydraRingConfigurationServiceTest.cs (.../HydraRingConfigurationServiceTest.cs) (revision 104d2d6389e829e9020ec8458c544c1fc5ae273d) @@ -22,7 +22,7 @@ using System; using System.Collections.Generic; using System.IO; -using System.Reflection; +using Core.Common.Assembly; using Core.Common.TestUtil; using NUnit.Framework; using Riskeer.HydraRing.Calculation.Data; @@ -37,7 +37,7 @@ [TestFixture] public class HydraRingConfigurationServiceTest { - private static readonly string hydraRingDirectory = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"HydraRing"); + private static readonly string hydraRingDirectory = Path.Combine(AssemblyResolver.GetApplicationDirectory(), "StandAlone", "Deltares", "HydraRing"); [Test] public void Constructor_ExpectedValues() Index: Riskeer/HydraRing/test/Riskeer.HydraRing.Calculation.Test/Services/HydraRingInitializationServiceTest.cs =================================================================== diff -u -r8298b571305d4c7e99134a5e4bade5181299230f -r104d2d6389e829e9020ec8458c544c1fc5ae273d --- Riskeer/HydraRing/test/Riskeer.HydraRing.Calculation.Test/Services/HydraRingInitializationServiceTest.cs (.../HydraRingInitializationServiceTest.cs) (revision 8298b571305d4c7e99134a5e4bade5181299230f) +++ Riskeer/HydraRing/test/Riskeer.HydraRing.Calculation.Test/Services/HydraRingInitializationServiceTest.cs (.../HydraRingInitializationServiceTest.cs) (revision 104d2d6389e829e9020ec8458c544c1fc5ae273d) @@ -21,7 +21,7 @@ using System; using System.IO; -using System.Reflection; +using Core.Common.Assembly; using Core.Common.TestUtil; using NUnit.Framework; using Riskeer.HydraRing.Calculation.Data; @@ -33,7 +33,7 @@ [TestFixture] public class HydraRingInitializationServiceTest { - private readonly string hydraRingDirectory = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"HydraRing"); + private static readonly string hydraRingDirectory = Path.Combine(AssemblyResolver.GetApplicationDirectory(), "StandAlone", "Deltares", "HydraRing"); [Test] public void Constructor_SettingsNull_ThrowsArgumentNullException()