summaryrefslogtreecommitdiff
path: root/src/mscorlib
diff options
context:
space:
mode:
authorGaurav Khanna <gkhanna@microsoft.com>2016-05-17 18:46:21 -0700
committerGaurav Khanna <gkhanna@microsoft.com>2016-05-17 18:46:21 -0700
commitd1df1851846e35703c9b0606748fe90423af464f (patch)
treea48b76c99b88b0887817250b34b7026261afe40b /src/mscorlib
parente78338ef715dc6fd89d9cbd0bf93c7f88d211c20 (diff)
downloadcoreclr-d1df1851846e35703c9b0606748fe90423af464f.tar.gz
coreclr-d1df1851846e35703c9b0606748fe90423af464f.tar.bz2
coreclr-d1df1851846e35703c9b0606748fe90423af464f.zip
Revert "Enable overriding assemblies from TPA"
Diffstat (limited to 'src/mscorlib')
-rw-r--r--src/mscorlib/model.CoreLib.xml1
-rw-r--r--src/mscorlib/model.xml1
-rw-r--r--src/mscorlib/src/System/Runtime/Loader/AssemblyLoadContext.cs85
3 files changed, 24 insertions, 63 deletions
diff --git a/src/mscorlib/model.CoreLib.xml b/src/mscorlib/model.CoreLib.xml
index 6ea5768f28..d8ab0e0c72 100644
--- a/src/mscorlib/model.CoreLib.xml
+++ b/src/mscorlib/model.CoreLib.xml
@@ -951,7 +951,6 @@
<Member Name="LoadFromStream(System.IO.Stream)" />
<Member Name="LoadFromStream(System.IO.Stream,System.IO.Stream)" />
<Member Name="Resolve(System.IntPtr,System.Reflection.AssemblyName)" />
- <Member Name="ResolveUsingResolvingEvent(System.IntPtr,System.Reflection.AssemblyName)" />
<Member Name="ResolveUnmanagedDll(System.String,System.IntPtr)" />
<Member Name="LoadUnmanagedDll(System.String)" />
<Member Name="LoadUnmanagedDllFromPath(System.String)" />
diff --git a/src/mscorlib/model.xml b/src/mscorlib/model.xml
index ef2774a9f3..225249f83c 100644
--- a/src/mscorlib/model.xml
+++ b/src/mscorlib/model.xml
@@ -951,7 +951,6 @@
<Member Name="LoadFromStream(System.IO.Stream)" />
<Member Name="LoadFromStream(System.IO.Stream,System.IO.Stream)" />
<Member Name="Resolve(System.IntPtr,System.Reflection.AssemblyName)" />
- <Member Name="ResolveUsingResolvingEvent(System.IntPtr,System.Reflection.AssemblyName)" />
<Member Name="ResolveUnmanagedDll(System.String,System.IntPtr)" />
<Member Name="LoadUnmanagedDll(System.String)" />
<Member Name="LoadUnmanagedDllFromPath(System.String)" />
diff --git a/src/mscorlib/src/System/Runtime/Loader/AssemblyLoadContext.cs b/src/mscorlib/src/System/Runtime/Loader/AssemblyLoadContext.cs
index 527fbe4d6c..6b53ba3b64 100644
--- a/src/mscorlib/src/System/Runtime/Loader/AssemblyLoadContext.cs
+++ b/src/mscorlib/src/System/Runtime/Loader/AssemblyLoadContext.cs
@@ -111,6 +111,13 @@ namespace System.Runtime.Loader
throw new ArgumentException( Environment.GetResourceString("Argument_AbsolutePathRequired"), "nativeImagePath");
}
+ // Check if the nativeImagePath has ".ni.dll" or ".ni.exe" extension
+ if (!(nativeImagePath.EndsWith(".ni.dll", StringComparison.InvariantCultureIgnoreCase) ||
+ nativeImagePath.EndsWith(".ni.exe", StringComparison.InvariantCultureIgnoreCase)))
+ {
+ throw new ArgumentException("nativeImagePath");
+ }
+
if (assemblyPath != null && Path.IsRelative(assemblyPath))
{
throw new ArgumentException(Environment.GetResourceString("Argument_AbsolutePathRequired"), "assemblyPath");
@@ -177,17 +184,7 @@ namespace System.Runtime.Loader
{
AssemblyLoadContext context = (AssemblyLoadContext)(GCHandle.FromIntPtr(gchManagedAssemblyLoadContext).Target);
- return context.ResolveUsingLoad(assemblyName);
- }
-
- // This method is invoked by the VM to resolve an assembly reference using the Resolving event
- // after trying assembly resolution via Load override and TPA load context without success.
- private static Assembly ResolveUsingResolvingEvent(IntPtr gchManagedAssemblyLoadContext, AssemblyName assemblyName)
- {
- AssemblyLoadContext context = (AssemblyLoadContext)(GCHandle.FromIntPtr(gchManagedAssemblyLoadContext).Target);
-
- // Invoke the AssemblyResolve event callbacks if wired up
- return context.ResolveUsingEvent(assemblyName);
+ return context.LoadFromAssemblyName(assemblyName);
}
private Assembly GetFirstResolvedAssembly(AssemblyName assemblyName)
@@ -213,8 +210,23 @@ namespace System.Runtime.Loader
return resolvedAssembly;
}
- private Assembly ValidateAssemblyNameWithSimpleName(Assembly assembly, string requestedSimpleName)
+ public Assembly LoadFromAssemblyName(AssemblyName assemblyName)
{
+ // AssemblyName is mutable. Cache the expected name before anybody gets a chance to modify it.
+ string requestedSimpleName = assemblyName.Name;
+
+ Assembly assembly = Load(assemblyName);
+ if (assembly == null)
+ {
+ // Invoke the AssemblyResolve event callbacks if wired up
+ assembly = GetFirstResolvedAssembly(assemblyName);
+ }
+
+ if (assembly == null)
+ {
+ throw new FileNotFoundException(Environment.GetResourceString("IO.FileLoad"), requestedSimpleName);
+ }
+
// Get the name of the loaded assembly
string loadedSimpleName = null;
@@ -232,56 +244,7 @@ namespace System.Runtime.Loader
throw new InvalidOperationException(Environment.GetResourceString("Argument_CustomAssemblyLoadContextRequestedNameMismatch"));
return assembly;
-
- }
-
- private Assembly ResolveUsingLoad(AssemblyName assemblyName)
- {
- string simpleName = assemblyName.Name;
- Assembly assembly = Load(assemblyName);
-
- if (assembly != null)
- {
- assembly = ValidateAssemblyNameWithSimpleName(assembly, simpleName);
- }
-
- return assembly;
- }
-
- private Assembly ResolveUsingEvent(AssemblyName assemblyName)
- {
- string simpleName = assemblyName.Name;
-
- // Invoke the AssemblyResolve event callbacks if wired up
- Assembly assembly = GetFirstResolvedAssembly(assemblyName);
- if (assembly != null)
- {
- assembly = ValidateAssemblyNameWithSimpleName(assembly, simpleName);
- }
-
- // Since attempt to resolve the assembly via Resolving event is the last option,
- // throw an exception if we do not find any assembly.
- if (assembly == null)
- {
- throw new FileNotFoundException(Environment.GetResourceString("IO.FileLoad"), simpleName);
- }
-
- return assembly;
- }
-
- public Assembly LoadFromAssemblyName(AssemblyName assemblyName)
- {
- // AssemblyName is mutable. Cache the expected name before anybody gets a chance to modify it.
- string requestedSimpleName = assemblyName.Name;
-
- Assembly assembly = ResolveUsingLoad(assemblyName);
- if (assembly == null)
- {
- // Invoke the AssemblyResolve event callbacks if wired up
- assembly = ResolveUsingEvent(assemblyName);
- }
- return assembly;
}
[DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode)]