Browse Source

fixes: Decompile Package (.nuget;.vsix; ecc...)

- Avoid exception on ArchiveFileLoader, BundleFileLoader and WebCilFileLoader
- Try Resolve .exe file
pull/3215/head
Giuseppe Lippolis 2 years ago
parent
commit
224f860a6d
  1. 5
      ICSharpCode.ILSpyX/FileLoaders/ArchiveFileLoader.cs
  2. 4
      ICSharpCode.ILSpyX/FileLoaders/BundleFileLoader.cs
  3. 6
      ICSharpCode.ILSpyX/FileLoaders/WebCilFileLoader.cs
  4. 3
      ILSpy/TreeNodes/PackageFolderTreeNode.cs

5
ICSharpCode.ILSpyX/FileLoaders/ArchiveFileLoader.cs

@ -25,6 +25,11 @@ namespace ICSharpCode.ILSpyX.FileLoaders @@ -25,6 +25,11 @@ namespace ICSharpCode.ILSpyX.FileLoaders
{
public Task<LoadResult?> Load(string fileName, Stream stream, FileLoadSettings settings)
{
if (!File.Exists(fileName))
{
return Task.FromResult<LoadResult?>(null);
}
try
{
var zip = LoadedPackage.FromZipFile(fileName);

4
ICSharpCode.ILSpyX/FileLoaders/BundleFileLoader.cs

@ -25,6 +25,10 @@ namespace ICSharpCode.ILSpyX.FileLoaders @@ -25,6 +25,10 @@ namespace ICSharpCode.ILSpyX.FileLoaders
{
public Task<LoadResult?> Load(string fileName, Stream stream, FileLoadSettings settings)
{
if (!File.Exists(fileName))
{
return Task.FromResult(default(LoadResult?));
}
var bundle = LoadedPackage.FromBundle(fileName);
var result = bundle != null ? new LoadResult { Package = bundle } : null;
return Task.FromResult(result);

6
ICSharpCode.ILSpyX/FileLoaders/WebCilFileLoader.cs

@ -28,6 +28,12 @@ namespace ICSharpCode.ILSpyX.FileLoaders @@ -28,6 +28,12 @@ namespace ICSharpCode.ILSpyX.FileLoaders
{
public Task<LoadResult?> Load(string fileName, Stream stream, FileLoadSettings settings)
{
if (!File.Exists(fileName))
{
return Task.FromResult<LoadResult?>(null);
}
MetadataReaderOptions options = settings.ApplyWinRTProjections
? MetadataReaderOptions.ApplyWindowsRuntimeProjections
: MetadataReaderOptions.None;

3
ILSpy/TreeNodes/PackageFolderTreeNode.cs

@ -67,7 +67,8 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -67,7 +67,8 @@ namespace ICSharpCode.ILSpy.TreeNodes
}
foreach (var entry in root.Entries.OrderBy(e => e.Name))
{
if (entry.Name.EndsWith(".dll", StringComparison.OrdinalIgnoreCase))
if (entry.Name.EndsWith(".dll", StringComparison.OrdinalIgnoreCase)
|| entry.Name.EndsWith(".exe", StringComparison.OrdinalIgnoreCase))
{
var asm = root.ResolveFileName(entry.Name);
if (asm != null)

Loading…
Cancel
Save