@ -35,7 +35,6 @@ using System.Windows.Media;
@@ -35,7 +35,6 @@ using System.Windows.Media;
using System.Windows.Media.Imaging ;
using System.Windows.Navigation ;
using System.Windows.Threading ;
using ICSharpCode.Decompiler ;
using ICSharpCode.Decompiler.Documentation ;
using ICSharpCode.Decompiler.Metadata ;
@ -47,13 +46,7 @@ using ICSharpCode.ILSpy.TextView;
@@ -47,13 +46,7 @@ using ICSharpCode.ILSpy.TextView;
using ICSharpCode.ILSpy.TreeNodes ;
using ICSharpCode.ILSpy.ViewModels ;
using ICSharpCode.TreeView ;
using Microsoft.NET.HostModel.AppHost ;
using Microsoft.NET.HostModel.Bundle ;
using Microsoft.Win32 ;
using Ookii.Dialogs.Wpf ;
using OSVersionHelper ;
using Xceed.Wpf.AvalonDock.Layout.Serialization ;
@ -1012,55 +1005,15 @@ namespace ICSharpCode.ILSpy
@@ -1012,55 +1005,15 @@ namespace ICSharpCode.ILSpy
}
break ;
default :
if ( IsAppBundle ( file , out var headerOffset ) ) {
if ( MessageBox . Show ( this , Properties . Resources . OpenSelfContainedExecutableMessage , "ILSpy" , MessageBoxButton . YesNo ) = = MessageBoxResult . No )
break ;
var dialog = new VistaFolderBrowserDialog ( ) ;
if ( dialog . ShowDialog ( ) ! = true )
break ;
DockWorkspace . Instance . RunWithCancellation ( ct = > Task < AvalonEditTextOutput > . Factory . StartNew ( ( ) = > {
var output = new AvalonEditTextOutput { Title = "Extracting " + file } ;
Stopwatch w = Stopwatch . StartNew ( ) ;
output . WriteLine ( $"Extracting {file} to {dialog.SelectedPath}..." ) ;
var extractor = new Extractor ( file , dialog . SelectedPath ) ;
extractor . ExtractFiles ( ) ;
output . WriteLine ( $"Done in {w.Elapsed}." ) ;
return output ;
} , ct ) ) . Then ( output = > {
DockWorkspace . Instance . ShowText ( output ) ;
OpenFileDialog dlg = new OpenFileDialog ( ) ;
dlg . Filter = ".NET assemblies|*.dll;*.exe;*.winmd" ;
dlg . Multiselect = true ;
dlg . InitialDirectory = dialog . SelectedPath ;
if ( dlg . ShowDialog ( ) = = true ) {
foreach ( var item in dlg . FileNames ) {
var asm = assemblyList . OpenAssembly ( item ) ;
if ( asm ! = null ) {
if ( loadedAssemblies ! = null )
loadedAssemblies . Add ( asm ) ;
else {
var node = assemblyListTreeNode . FindAssemblyNode ( asm ) ;
if ( node ! = null & & focusNode ) {
AssemblyTreeView . SelectedItems . Add ( node ) ;
lastNode = node ;
}
}
}
}
}
} ) . HandleExceptions ( ) ;
} else {
var asm = assemblyList . OpenAssembly ( file ) ;
if ( asm ! = null ) {
if ( loadedAssemblies ! = null )
loadedAssemblies . Add ( asm ) ;
else {
var node = assemblyListTreeNode . FindAssemblyNode ( asm ) ;
if ( node ! = null & & focusNode ) {
AssemblyTreeView . SelectedItems . Add ( node ) ;
lastNode = node ;
}
var asm = assemblyList . OpenAssembly ( file ) ;
if ( asm ! = null ) {
if ( loadedAssemblies ! = null )
loadedAssemblies . Add ( asm ) ;
else {
var node = assemblyListTreeNode . FindAssemblyNode ( asm ) ;
if ( node ! = null & & focusNode ) {
AssemblyTreeView . SelectedItems . Add ( node ) ;
lastNode = node ;
}
}
}
@ -1070,16 +1023,6 @@ namespace ICSharpCode.ILSpy
@@ -1070,16 +1023,6 @@ namespace ICSharpCode.ILSpy
if ( lastNode ! = null & & focusNode )
AssemblyTreeView . FocusNode ( lastNode ) ;
}
bool IsAppBundle ( string filename , out long bundleHeaderOffset )
{
try {
return HostWriter . IsBundle ( filename , out bundleHeaderOffset ) ;
} catch ( Exception ) {
bundleHeaderOffset = - 1 ;
return false ;
}
}
}
void RefreshCommandExecuted ( object sender , ExecutedRoutedEventArgs e )