diff options
author | Gaurav Khanna <gkhanna@microsoft.com> | 2016-05-17 18:46:21 -0700 |
---|---|---|
committer | Gaurav Khanna <gkhanna@microsoft.com> | 2016-05-17 18:46:21 -0700 |
commit | d1df1851846e35703c9b0606748fe90423af464f (patch) | |
tree | a48b76c99b88b0887817250b34b7026261afe40b /src/mscorlib | |
parent | e78338ef715dc6fd89d9cbd0bf93c7f88d211c20 (diff) | |
download | coreclr-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.xml | 1 | ||||
-rw-r--r-- | src/mscorlib/model.xml | 1 | ||||
-rw-r--r-- | src/mscorlib/src/System/Runtime/Loader/AssemblyLoadContext.cs | 85 |
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)] |