|
|
|
@ -138,12 +138,33 @@ namespace ICSharpCode.ILSpy
@@ -138,12 +138,33 @@ namespace ICSharpCode.ILSpy
|
|
|
|
|
assemblyLookupCache.Clear(); |
|
|
|
|
winRTMetadataLookupCache.Clear(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public LoadedAssembly Open(string assemblyUri, bool isAutoLoaded = false) |
|
|
|
|
{ |
|
|
|
|
if (assemblyUri.StartsWith("nupkg://", StringComparison.OrdinalIgnoreCase)) { |
|
|
|
|
string fileName = assemblyUri.Substring("nupkg://".Length); |
|
|
|
|
int separator = fileName.LastIndexOf(';'); |
|
|
|
|
string componentName = null; |
|
|
|
|
if (separator > -1) { |
|
|
|
|
componentName = fileName.Substring(separator + 1); |
|
|
|
|
fileName = fileName.Substring(0, separator); |
|
|
|
|
LoadedNugetPackage package = new LoadedNugetPackage(fileName); |
|
|
|
|
var entry = package.Entries.FirstOrDefault(e => e.Name == componentName); |
|
|
|
|
if (entry != null) { |
|
|
|
|
return OpenAssembly(assemblyUri, entry.Stream, true); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
} else { |
|
|
|
|
return OpenAssembly(assemblyUri, isAutoLoaded); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Opens an assembly from disk.
|
|
|
|
|
/// Returns the existing assembly node if it is already loaded.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public LoadedAssembly OpenAssembly(string file, bool isAutoLoaded=false) |
|
|
|
|
public LoadedAssembly OpenAssembly(string file, bool isAutoLoaded = false) |
|
|
|
|
{ |
|
|
|
|
App.Current.Dispatcher.VerifyAccess(); |
|
|
|
|
|
|
|
|
|