Skip to content

Commit 857e903

Browse files
authored
Merge pull request #1570 from riganti/improve-assemblyload-error
Include referencing assembly in "could not load" error
2 parents 5ab7687 + aa7549d commit 857e903

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/Framework/Framework/Compilation/ControlTree/DefaultControlResolver.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,12 +164,10 @@ private static void RegisterCapabilitiesFromInterfaces(Type type)
164164

165165
private IEnumerable<Assembly> GetAllRelevantAssemblies(string dotvvmAssembly)
166166
{
167-
168167
#if DotNetCore
169168
var assemblies = compiledAssemblyCache.GetAllAssemblies()
170169
.Where(a => a.GetReferencedAssemblies().Any(r => r.Name == dotvvmAssembly));
171170
#else
172-
173171
var loadedAssemblies = compiledAssemblyCache.GetAllAssemblies()
174172
.Where(a => a.GetReferencedAssemblies().Any(r => r.Name == dotvvmAssembly));
175173

@@ -178,7 +176,16 @@ private IEnumerable<Assembly> GetAllRelevantAssemblies(string dotvvmAssembly)
178176
// ReflectionUtils.GetAllAssemblies() in netframework returns only assemblies which have already been loaded into
179177
// the current AppDomain, to return all assemblies we traverse recursively all referenced Assemblies
180178
var assemblies = loadedAssemblies
181-
.SelectRecursively(a => a.GetReferencedAssemblies().Where(an => visitedAssemblies.Add(an.FullName)).Select(an => Assembly.Load(an)))
179+
.SelectRecursively(a => a.GetReferencedAssemblies().Where(an => visitedAssemblies.Add(an.FullName)).Select(an => {
180+
try
181+
{
182+
return Assembly.Load(an);
183+
}
184+
catch (Exception ex)
185+
{
186+
throw new Exception($"Unable to load assembly '{an.FullName}' referenced by '{a.FullName}'.", ex);
187+
}
188+
}))
182189
.Where(a => a.GetReferencedAssemblies().Any(r => r.Name == dotvvmAssembly))
183190
.Distinct();
184191
#endif

0 commit comments

Comments
 (0)