From 7398030caa181784c6da69a913e12227e905e7f1 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Thu, 21 Nov 2019 02:54:38 +1100 Subject: [PATCH 1/2] fix: exception happening on startup of applications --- src/ReactiveUI/Mixins/DependencyResolverMixins.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ReactiveUI/Mixins/DependencyResolverMixins.cs b/src/ReactiveUI/Mixins/DependencyResolverMixins.cs index 15c51860f5..9b5f234896 100644 --- a/src/ReactiveUI/Mixins/DependencyResolverMixins.cs +++ b/src/ReactiveUI/Mixins/DependencyResolverMixins.cs @@ -6,6 +6,7 @@ using System; using System.Diagnostics.CodeAnalysis; using System.Globalization; +using System.IO; using System.Linq; using System.Linq.Expressions; using System.Reflection; @@ -44,7 +45,9 @@ public static void InitializeReactiveUI(this IMutableDependencyResolver resolver var assemblyName = new AssemblyName(fdr.AssemblyQualifiedName.Replace(fdr.FullName + ", ", string.Empty)); - extraNs.ForEach(ns => ProcessRegistrationForNamespace(ns, assemblyName, resolver)); + extraNs + .Where(x => File.Exists(x + ".dll")) + .ForEach(ns => ProcessRegistrationForNamespace(ns, assemblyName, resolver)); } /// From 9d34e8bf2792cbb4a6c1c09dadafb7073a57903a Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Thu, 21 Nov 2019 03:00:20 +1100 Subject: [PATCH 2/2] Change to using the current execution directory --- src/ReactiveUI/Mixins/DependencyResolverMixins.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ReactiveUI/Mixins/DependencyResolverMixins.cs b/src/ReactiveUI/Mixins/DependencyResolverMixins.cs index 9b5f234896..fb6622fd11 100644 --- a/src/ReactiveUI/Mixins/DependencyResolverMixins.cs +++ b/src/ReactiveUI/Mixins/DependencyResolverMixins.cs @@ -46,7 +46,7 @@ public static void InitializeReactiveUI(this IMutableDependencyResolver resolver var assemblyName = new AssemblyName(fdr.AssemblyQualifiedName.Replace(fdr.FullName + ", ", string.Empty)); extraNs - .Where(x => File.Exists(x + ".dll")) + .Where(GetNamespaceExists) .ForEach(ns => ProcessRegistrationForNamespace(ns, assemblyName, resolver)); } @@ -121,5 +121,12 @@ private static void ProcessRegistrationForNamespace(string ns, AssemblyName asse registerer.Register((f, t) => resolver.RegisterConstant(f(), t)); } } + + private static bool GetNamespaceExists(string namespaceName) + { + string folderPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + string assemblyPath = Path.Combine(folderPath, new AssemblyName(namespaceName).Name + ".dll"); + return File.Exists(assemblyPath); + } } }