diff --git a/ILSpy/Search/AssemblySearchStrategy.cs b/ILSpy/Search/AssemblySearchStrategy.cs index 6adaebfb1..30859b3a2 100644 --- a/ILSpy/Search/AssemblySearchStrategy.cs +++ b/ILSpy/Search/AssemblySearchStrategy.cs @@ -33,19 +33,28 @@ namespace ICSharpCode.ILSpy.Search public override void Search(PEFile module, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); - string name = GetNameToMatch(module); + + if (searchKind == AssemblySearchKind.NameOrFileName) { + string localName = GetNameToMatch(module, AssemblySearchKind.Name); + string fileName = Path.GetFileName(GetNameToMatch(module, AssemblySearchKind.FilePath)); + if (IsMatch(localName) || IsMatch(fileName)) + OnFoundResult(module); + return; + } + + string name = GetNameToMatch(module, searchKind); if (IsMatch(name)) OnFoundResult(module); } - string GetNameToMatch(PEFile module) + string GetNameToMatch(PEFile module, AssemblySearchKind kind) { - switch (searchKind) { + switch (kind) { case AssemblySearchKind.FullName: return module.FullName; case AssemblySearchKind.Name: return module.Name; - case AssemblySearchKind.FileName: + case AssemblySearchKind.FilePath: return module.FileName; } @@ -55,7 +64,7 @@ namespace ICSharpCode.ILSpy.Search var metadata = module.Metadata; var definition = module.Metadata.GetAssemblyDefinition(); - switch (searchKind) { + switch (kind) { case AssemblySearchKind.Culture: if (definition.Culture.IsNil) return "neutral"; @@ -89,9 +98,10 @@ namespace ICSharpCode.ILSpy.Search enum AssemblySearchKind { + NameOrFileName, Name, FullName, - FileName, + FilePath, Culture, Version, PublicKey, diff --git a/ILSpy/Search/SearchPane.cs b/ILSpy/Search/SearchPane.cs index 1b0aa24ac..bf2eda16c 100644 --- a/ILSpy/Search/SearchPane.cs +++ b/ILSpy/Search/SearchPane.cs @@ -348,28 +348,13 @@ namespace ICSharpCode.ILSpy return new ResourceSearchStrategy(apiVisibility, resultQueue, searchTerm[0].Substring(2)); if (searchTerm[0].StartsWith("a:", StringComparison.Ordinal)) - return new AssemblySearchStrategy(searchTerm[0].Substring(2), resultQueue, AssemblySearchKind.Name); - - if (searchTerm[0].StartsWith("afn:", StringComparison.Ordinal)) - return new AssemblySearchStrategy(searchTerm[0].Substring(4), resultQueue, AssemblySearchKind.FullName); + return new AssemblySearchStrategy(searchTerm[0].Substring(2), resultQueue, AssemblySearchKind.NameOrFileName); if (searchTerm[0].StartsWith("af:", StringComparison.Ordinal)) - return new AssemblySearchStrategy(searchTerm[0].Substring(3), resultQueue, AssemblySearchKind.FileName); - - if (searchTerm[0].StartsWith("ac:", StringComparison.Ordinal)) - return new AssemblySearchStrategy(searchTerm[0].Substring(3), resultQueue, AssemblySearchKind.Culture); - - if (searchTerm[0].StartsWith("av:", StringComparison.Ordinal)) - return new AssemblySearchStrategy(searchTerm[0].Substring(3), resultQueue, AssemblySearchKind.Version); - - if (searchTerm[0].StartsWith("apk:", StringComparison.Ordinal)) - return new AssemblySearchStrategy(searchTerm[0].Substring(4), resultQueue, AssemblySearchKind.PublicKey); - - if (searchTerm[0].StartsWith("aha:", StringComparison.Ordinal)) - return new AssemblySearchStrategy(searchTerm[0].Substring(4), resultQueue, AssemblySearchKind.HashAlgorithm); + return new AssemblySearchStrategy(searchTerm[0].Substring(3), resultQueue, AssemblySearchKind.FilePath); - if (searchTerm[0].StartsWith("afl:", StringComparison.Ordinal)) - return new AssemblySearchStrategy(searchTerm[0].Substring(4), resultQueue, AssemblySearchKind.Flags); + if (searchTerm[0].StartsWith("an:", StringComparison.Ordinal)) + return new AssemblySearchStrategy(searchTerm[0].Substring(3), resultQueue, AssemblySearchKind.FullName); } switch (searchMode) @@ -395,7 +380,7 @@ namespace ICSharpCode.ILSpy case SearchMode.Resource: return new ResourceSearchStrategy(apiVisibility, resultQueue, searchTerm); case SearchMode.Assembly: - return new AssemblySearchStrategy(resultQueue, searchTerm, AssemblySearchKind.Name); + return new AssemblySearchStrategy(resultQueue, searchTerm, AssemblySearchKind.NameOrFileName); } return null;