|
|
|
@ -17,8 +17,10 @@
@@ -17,8 +17,10 @@
|
|
|
|
|
// DEALINGS IN THE SOFTWARE.
|
|
|
|
|
|
|
|
|
|
using System; |
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
using System.Collections.ObjectModel; |
|
|
|
|
using System.Collections.Specialized; |
|
|
|
|
using System.IO; |
|
|
|
|
using System.Linq; |
|
|
|
|
using System.Windows; |
|
|
|
|
using ICSharpCode.Decompiler; |
|
|
|
@ -98,11 +100,12 @@ namespace ICSharpCode.ILSpy.TreeNodes
@@ -98,11 +100,12 @@ namespace ICSharpCode.ILSpy.TreeNodes
|
|
|
|
|
files = e.Data.GetData(DataFormats.FileDrop) as string[]; |
|
|
|
|
if (files != null) { |
|
|
|
|
lock (assemblyList.assemblies) { |
|
|
|
|
var assemblies = (from file in files |
|
|
|
|
where file != null |
|
|
|
|
select assemblyList.OpenAssembly(file) into node |
|
|
|
|
where node != null |
|
|
|
|
select node).Distinct().ToList(); |
|
|
|
|
var assemblies = files |
|
|
|
|
.Where(file => file != null) |
|
|
|
|
.SelectMany(file => OpenAssembly(assemblyList, file)) |
|
|
|
|
.Where(asm => asm != null) |
|
|
|
|
.Distinct() |
|
|
|
|
.ToArray(); |
|
|
|
|
foreach (LoadedAssembly asm in assemblies) { |
|
|
|
|
int nodeIndex = assemblyList.assemblies.IndexOf(asm); |
|
|
|
|
if (nodeIndex < index) |
|
|
|
@ -117,6 +120,25 @@ namespace ICSharpCode.ILSpy.TreeNodes
@@ -117,6 +120,25 @@ namespace ICSharpCode.ILSpy.TreeNodes
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private IEnumerable<LoadedAssembly> OpenAssembly(AssemblyList assemblyList, string file) |
|
|
|
|
{ |
|
|
|
|
if (file.EndsWith(".nupkg")) { |
|
|
|
|
LoadedNugetPackage package = new LoadedNugetPackage(file); |
|
|
|
|
var selectionDialog = new NugetPackageBrowserDialog(package); |
|
|
|
|
selectionDialog.Owner = Application.Current.MainWindow; |
|
|
|
|
if (selectionDialog.ShowDialog() != true) |
|
|
|
|
yield break; |
|
|
|
|
foreach (var entry in selectionDialog.SelectedItems) { |
|
|
|
|
var nugetAsm = assemblyList.OpenAssembly("nupkg://" + file + ";" + entry.Name, entry.Stream, true); |
|
|
|
|
if (nugetAsm != null) { |
|
|
|
|
yield return nugetAsm; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
yield break; |
|
|
|
|
} |
|
|
|
|
yield return assemblyList.OpenAssembly(file); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public Action<SharpTreeNode> Select = delegate { }; |
|
|
|
|
|
|
|
|
|
public override void Decompile(Language language, ITextOutput output, DecompilationOptions options) |
|
|
|
|