Skip to content

Commit a7fe2b3

Browse files
committed
Fix exceptions for Xamarin.Android
In Xamarin.Android project DependencyContext.Default throws exception, instead of returning null, and there is no such thing as BaseDirrectory so another null check is required DEVSIX-1726
1 parent 04d7d3e commit a7fe2b3

File tree

1 file changed

+35
-25
lines changed

1 file changed

+35
-25
lines changed

itext/itext.io/itext/io/util/ResourceUtil.cs

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -133,21 +133,23 @@ public static Stream GetResourceStream(string key, Type definedClassType) {
133133
}
134134
}
135135
#else
136-
if (DependencyContext.Default != null) {
137-
string runtimeId = RuntimeEnvironment.GetRuntimeIdentifier();
138-
IEnumerable<AssemblyName> loadedAssemblies = DependencyContext.Default.GetRuntimeAssemblyNames(runtimeId).ToList();
139-
foreach (AssemblyName assemblyName in loadedAssemblies) {
140-
if (assemblyName.Name.StartsWith("itext")) {
141-
try {
142-
Assembly assembly = Assembly.Load(assemblyName);
143-
istr = SearchResourceInAssembly(key, assembly);
144-
if (istr != null) {
145-
return istr;
146-
}
147-
} catch { }
136+
try {
137+
if (DependencyContext.Default != null) {
138+
string runtimeId = RuntimeEnvironment.GetRuntimeIdentifier();
139+
IEnumerable<AssemblyName> loadedAssemblies = DependencyContext.Default.GetRuntimeAssemblyNames(runtimeId).ToList();
140+
foreach (AssemblyName assemblyName in loadedAssemblies) {
141+
if (assemblyName.Name.StartsWith("itext")) {
142+
try {
143+
Assembly assembly = Assembly.Load(assemblyName);
144+
istr = SearchResourceInAssembly(key, assembly);
145+
if (istr != null) {
146+
return istr;
147+
}
148+
} catch { }
149+
}
148150
}
149151
}
150-
}
152+
} catch { }
151153
#endif
152154

153155
return istr;
@@ -235,21 +237,29 @@ private static void LoadITextResourceAssemblies() {
235237
}
236238
#else
237239
string runtimeId = RuntimeEnvironment.GetRuntimeIdentifier();
238-
List<AssemblyName> loadedAssemblies = DependencyContext.Default != null ? DependencyContext.Default.GetRuntimeAssemblyNames(runtimeId).ToList() : new List<AssemblyName>();
240+
List<AssemblyName> loadedAssemblies = null;
241+
try {
242+
loadedAssemblies = DependencyContext.Default?.GetRuntimeAssemblyNames(runtimeId).ToList();
243+
} catch { }
244+
if (loadedAssemblies == null) {
245+
loadedAssemblies = new List<AssemblyName>();
246+
}
239247

240-
var referencedPaths = Directory.GetFiles(FileUtil.GetBaseDirectory(), "*.dll");
241-
foreach (String path in referencedPaths)
242-
{
243-
try
248+
if (FileUtil.GetBaseDirectory() != null) {
249+
var referencedPaths = Directory.GetFiles(FileUtil.GetBaseDirectory(), "*.dll");
250+
foreach (String path in referencedPaths)
244251
{
245-
AssemblyName name = AssemblyLoadContextUtil.GetAssemblyName(path);
246-
if (iTextResourceAssemblyNames.Contains(name.Name) && !loadedAssemblies.Any(assembly => assembly.Name.Equals(name.Name))) {
247-
Assembly newAssembly = AssemblyLoadContextUtil.LoadFromDefaultContextAssemblyPath(path);
248-
loadedAssemblies.Add(newAssembly.GetName());
252+
try
253+
{
254+
AssemblyName name = AssemblyLoadContextUtil.GetAssemblyName(path);
255+
if (iTextResourceAssemblyNames.Contains(name.Name) && !loadedAssemblies.Any(assembly => assembly.Name.Equals(name.Name))) {
256+
Assembly newAssembly = AssemblyLoadContextUtil.LoadFromDefaultContextAssemblyPath(path);
257+
loadedAssemblies.Add(newAssembly.GetName());
258+
}
259+
}
260+
catch
261+
{
249262
}
250-
}
251-
catch
252-
{
253263
}
254264
}
255265
#endif

0 commit comments

Comments
 (0)