├── .gitattributes ├── .gitignore ├── Build.cmd ├── GenerateTestSite.cmd ├── LICENSE ├── README.md ├── RunTestSite.cmd ├── SECURITY.md ├── SourceBrowser.sln ├── TestCode ├── ExternalFiles │ ├── File1.cs │ └── File2.cs ├── Project2 │ ├── -._~!$'()+,=@.cs │ ├── Class1.Partial.cs │ ├── Class1.cs │ └── Project2.csproj ├── TestSolution.sln ├── TestSolution │ ├── Folder │ │ └── Test.cs │ ├── Program.cs │ └── TestSolution.csproj ├── TypeScript │ ├── TypeScript.csproj │ ├── analyzer.ts │ ├── analyzerEnv.ts │ ├── shims.ts │ └── utilities.ts ├── VBLibrary │ ├── Class1.vb │ └── VBLibrary.vbproj ├── WildcardIncludes │ ├── Program.cs │ ├── WildcardIncludes.csproj │ └── WildcardIncludes.sln └── WpfApplication1 │ ├── App.config │ ├── App.xaml │ ├── App.xaml.cs │ ├── CustomControl1.cs │ ├── Dictionary1.xaml │ ├── FlowDocument1.xaml │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── Page1.xaml │ ├── Page1.xaml.cs │ ├── PageFunction1.xaml │ ├── PageFunction1.xaml.cs │ ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings │ ├── SplashScreen1.png │ ├── Themes │ └── Generic.xaml │ ├── UserControl1.xaml │ ├── UserControl1.xaml.cs │ ├── Window1.xaml │ ├── Window1.xaml.cs │ └── WpfApplication1.csproj ├── key.snk ├── lib └── Microsoft.CodeAnalysis.Workspaces.Desktop.dll └── src ├── BuildLogParser ├── BuildLogParser.csproj ├── CompilerInvocation.cs └── LogAnalyzer.cs ├── Common ├── AssemblyNameExtractor.cs ├── AssertTraceListener.cs ├── Common.csproj ├── CustomAppDomainManager.cs ├── Disposable.cs ├── FileUtilities.cs ├── Huffman.cs ├── IsManagedAssembly.cs ├── Log.cs ├── Measure.cs ├── MultiDictionary.cs ├── Paths.cs ├── PriorityQueue.cs ├── ProcessLaunchService.cs ├── RangeUtilities.cs ├── SortedSearch.cs └── TextUtilities.cs ├── GitGlyph ├── GitBlameVisitor.cs ├── GitGlyph.csproj └── GitSourceBrowserPlugin.cs ├── HtmlGenerator.Tests ├── GitBlameVisitorTests.cs ├── HtmlGenerator.Tests.csproj ├── MSBuildExpressionParserTests.cs ├── MetadataAsSourceUnitTests.cs ├── PathsUnitTests.cs ├── PrepareRangesTests.cs ├── RedirectFileTests.cs ├── SerializationUnitTests.cs ├── SymbolIdUnitTests.cs ├── TestNormalize.cs └── TextUtilitiesTests.cs ├── HtmlGenerator ├── AppDomainInitializer.cs ├── Configuration.cs ├── HtmlGenerator.csproj ├── Pass1-Generation │ ├── Classifier.Range.cs │ ├── Classifier.cs │ ├── DocumentGenerator.Declarations.cs │ ├── DocumentGenerator.HighlightReferences.cs │ ├── DocumentGenerator.Links.cs │ ├── DocumentGenerator.References.cs │ ├── DocumentGenerator.cs │ ├── Federation.cs │ ├── GenerateFromBuildLog.cs │ ├── MSBuildSupport.cs │ ├── MetadataAsSource.cs │ ├── ProjectGenerator.Declarations.cs │ ├── ProjectGenerator.MetadataToSourceRedirect.cs │ ├── ProjectGenerator.ProjectExplorer.cs │ ├── ProjectGenerator.ProjectFile.cs │ ├── ProjectGenerator.ProjectInfo.cs │ ├── ProjectGenerator.References.Pass1.cs │ ├── ProjectGenerator.cs │ ├── SolutionGenerator.SolutionExplorer.cs │ ├── SolutionGenerator.cs │ ├── TypeScriptSupport.AnalysisError.cs │ ├── TypeScriptSupport.AnalyzedFile.cs │ ├── TypeScriptSupport.ClassifiedRange.cs │ ├── TypeScriptSupport.Hyperlink.cs │ ├── TypeScriptSupport.cs │ ├── XamlSupport.cs │ └── XmlSupport.cs ├── Pass2-Finalization │ ├── NamespaceExplorer.cs │ ├── ProjectFinalizer.Declarations.cs │ ├── ProjectFinalizer.References.cs │ ├── ProjectFinalizer.cs │ ├── SolutionFinalizer.SolutionExplorer.cs │ └── SolutionFinalizer.cs ├── Program.cs ├── ProjectSkeleton.cs ├── Properties │ └── launchSettings.json ├── SolutionInfo.cs ├── SourceBrowser.nuspec ├── TypeScriptSupport │ ├── analyzer.js │ └── lib.d.ts ├── Utilities │ ├── Constants.cs │ ├── DeclaredSymbolInfo.cs │ ├── FirstChanceExceptionHandler.cs │ ├── Folder`1.cs │ ├── Glyph.cs │ ├── HtmlElementInfo.cs │ ├── MSBuildExpressionParser.cs │ ├── Markup.cs │ ├── MetadataReading.cs │ ├── Paths.cs │ ├── PluginLogger.cs │ ├── Reference.cs │ ├── Serialization.cs │ ├── SymbolIdService.cs │ ├── SymbolKindText.cs │ ├── SymbolSorter.cs │ ├── WorkspaceHacks.cs │ └── XmlDocumentationProvider.cs ├── Web │ └── index │ │ └── AffiliateLinks.txt └── app.config ├── MEF ├── ContextKeys.cs ├── ILog.cs ├── ISourceBrowserPlugin.cs ├── ISourceBrowserPluginMetadata.cs ├── ISymbolVisitor.cs ├── ITextVisitor.cs ├── MEF.csproj ├── PluginAggregator.cs ├── SourceBrowserPluginWrapper.cs └── SymbolVisitorWrapper.cs ├── SourceIndexServer.Tests ├── IndexLoaderUnitTests.cs ├── IndexUnitTests.cs ├── QueryUnitTests.cs └── SourceIndexServer.Tests.csproj └── SourceIndexServer ├── Controllers └── SymbolsController.cs ├── Models ├── AssemblyInfo.cs ├── Constants.cs ├── DeclaredSymbolInfo.cs ├── Index.cs ├── IndexEntry.cs ├── IndexLoader.cs ├── Markup.cs ├── Query.cs ├── QueryInterpretation.cs ├── ResultsHtmlGenerator.cs ├── Serialization.cs └── SymbolKindText.cs ├── Program.cs ├── Properties └── launchSettings.json ├── SourceIndexServer.csproj ├── Startup.cs └── wwwroot ├── content └── icons │ ├── 0.png │ ├── 1.png │ ├── 10.png │ ├── 100.png │ ├── 101.png │ ├── 102.png │ ├── 103.png │ ├── 104.png │ ├── 105.png │ ├── 106.png │ ├── 107.png │ ├── 108.png │ ├── 109.png │ ├── 11.png │ ├── 110.png │ ├── 111.png │ ├── 112.png │ ├── 113.png │ ├── 114.png │ ├── 115.png │ ├── 116.png │ ├── 117.png │ ├── 118.png │ ├── 119.png │ ├── 12.png │ ├── 120.png │ ├── 121.png │ ├── 122.png │ ├── 123.png │ ├── 124.png │ ├── 125.png │ ├── 126.png │ ├── 127.png │ ├── 128.png │ ├── 129.png │ ├── 13.png │ ├── 130.png │ ├── 131.png │ ├── 132.png │ ├── 133.png │ ├── 134.png │ ├── 135.png │ ├── 136.png │ ├── 137.png │ ├── 138.png │ ├── 139.png │ ├── 14.png │ ├── 140.png │ ├── 141.png │ ├── 142.png │ ├── 143.png │ ├── 144.png │ ├── 145.png │ ├── 146.png │ ├── 147.png │ ├── 148.png │ ├── 149.png │ ├── 15.png │ ├── 150.png │ ├── 151.png │ ├── 152.png │ ├── 153.png │ ├── 154.png │ ├── 155.png │ ├── 156.png │ ├── 157.png │ ├── 158.png │ ├── 159.png │ ├── 16.png │ ├── 160.png │ ├── 161.png │ ├── 162.png │ ├── 163.png │ ├── 164.png │ ├── 165.png │ ├── 166.png │ ├── 167.png │ ├── 168.png │ ├── 169.png │ ├── 17.png │ ├── 170.png │ ├── 171.png │ ├── 172.png │ ├── 173.png │ ├── 174.png │ ├── 175.png │ ├── 176.png │ ├── 177.png │ ├── 178.png │ ├── 179.png │ ├── 18.png │ ├── 180.png │ ├── 181.png │ ├── 182.png │ ├── 183.png │ ├── 184.png │ ├── 185.png │ ├── 186.png │ ├── 187.png │ ├── 188.png │ ├── 189.png │ ├── 19.png │ ├── 190.png │ ├── 191.png │ ├── 192.png │ ├── 193.png │ ├── 194.png │ ├── 195.png │ ├── 196.png │ ├── 197.png │ ├── 198.png │ ├── 199.png │ ├── 2.png │ ├── 20.png │ ├── 200.png │ ├── 201.png │ ├── 202.png │ ├── 203.png │ ├── 204.png │ ├── 205.png │ ├── 206.png │ ├── 207.png │ ├── 208.png │ ├── 209.png │ ├── 21.png │ ├── 210.png │ ├── 211.png │ ├── 212.png │ ├── 213.png │ ├── 214.png │ ├── 215.png │ ├── 216.png │ ├── 217.png │ ├── 218.png │ ├── 219.png │ ├── 22.png │ ├── 220.png │ ├── 221.png │ ├── 222.png │ ├── 223.png │ ├── 224.png │ ├── 225.png │ ├── 226.png │ ├── 227.png │ ├── 228.png │ ├── 229.png │ ├── 23.png │ ├── 230.png │ ├── 231.png │ ├── 232.png │ ├── 233.png │ ├── 234.png │ ├── 235.png │ ├── 24.png │ ├── 25.png │ ├── 26.png │ ├── 27.png │ ├── 28.png │ ├── 29.png │ ├── 3.png │ ├── 30.png │ ├── 31.png │ ├── 32.png │ ├── 33.png │ ├── 34.png │ ├── 35.png │ ├── 36.png │ ├── 37.png │ ├── 38.png │ ├── 39.png │ ├── 4.png │ ├── 40.png │ ├── 41.png │ ├── 42.png │ ├── 43.png │ ├── 44.png │ ├── 45.png │ ├── 46.png │ ├── 47.png │ ├── 48.png │ ├── 49.png │ ├── 5.png │ ├── 50.png │ ├── 51.png │ ├── 52.png │ ├── 53.png │ ├── 54.png │ ├── 55.png │ ├── 56.png │ ├── 57.png │ ├── 58.png │ ├── 59.png │ ├── 6.png │ ├── 60.png │ ├── 61.png │ ├── 62.png │ ├── 63.png │ ├── 64.png │ ├── 65.png │ ├── 66.png │ ├── 67.png │ ├── 68.png │ ├── 69.png │ ├── 7.png │ ├── 70.png │ ├── 71.png │ ├── 72.png │ ├── 73.png │ ├── 74.png │ ├── 75.png │ ├── 76.png │ ├── 77.png │ ├── 78.png │ ├── 79.png │ ├── 8.png │ ├── 80.png │ ├── 81.png │ ├── 82.png │ ├── 83.png │ ├── 84.png │ ├── 85.png │ ├── 86.png │ ├── 87.png │ ├── 88.png │ ├── 89.png │ ├── 9.png │ ├── 90.png │ ├── 91.png │ ├── 92.png │ ├── 93.png │ ├── 94.png │ ├── 95.png │ ├── 96.png │ ├── 97.png │ ├── 98.png │ ├── 99.png │ ├── CSharpProjectExplorer.png │ ├── DocumentOutline.png │ ├── NamespaceExplorer.png │ ├── VBProjectExplorer.png │ ├── csharp.png │ ├── dotnet.png │ ├── help.png │ ├── microsoftlogo.png │ ├── minus.png │ ├── plus.png │ ├── searchmagnifyingglass.png │ ├── typescript.png │ ├── vb.png │ └── xaml.png ├── documentoutline.html ├── favicon.ico ├── header.html ├── index.html ├── overview.html ├── scripts.js └── styles.css /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Don't mess with my line endings. 3 | ############################################################################### 4 | * -text 5 | src/HtmlGenerator/TypeScriptSupport/analyzer.js linguist-vendored 6 | src/HtmlGenerator/TypeScriptSupport/lib.d.ts linguist-vendored 7 | -------------------------------------------------------------------------------- /Build.cmd: -------------------------------------------------------------------------------- 1 | msbuild /r /m /bl -------------------------------------------------------------------------------- /GenerateTestSite.cmd: -------------------------------------------------------------------------------- 1 | src\HtmlGenerator\bin\Debug\net472\HtmlGenerator.exe TestCode\TestSolution.sln /out:src\HtmlGenerator\bin\Debug\net472\Web\Index -------------------------------------------------------------------------------- /RunTestSite.cmd: -------------------------------------------------------------------------------- 1 | cd src\HtmlGenerator\bin\Debug\net472\Web\Index 2 | dotnet Microsoft.SourceBrowser.SourceIndexServer.dll -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | The .NET Core and ASP.NET Core support policy, including supported versions can be found at the [.NET Core Support Policy Page](https://dotnet.microsoft.com/platform/support/policy/dotnet-core). 6 | 7 | ## Reporting a Vulnerability 8 | 9 | Security issues and bugs should be reported privately to the Microsoft Security Response Center (MSRC), either by emailing secure@microsoft.com or via the portal at https://msrc.microsoft.com. 10 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your 11 | original message. Further information, including the MSRC PGP key, can be found in the [MSRC Report an Issue FAQ](https://www.microsoft.com/en-us/msrc/faqs-report-an-issue). 12 | 13 | Reports via MSRC may qualify for the .NET Core Bug Bounty. Details of the .NET Core Bug Bounty including terms and conditions are at [https://aka.ms/corebounty](https://aka.ms/corebounty). 14 | 15 | Please do not open issues for anything you think might have a security implication. -------------------------------------------------------------------------------- /TestCode/ExternalFiles/File1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/TestCode/ExternalFiles/File1.cs -------------------------------------------------------------------------------- /TestCode/ExternalFiles/File2.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/TestCode/ExternalFiles/File2.cs -------------------------------------------------------------------------------- /TestCode/Project2/-._~!$'()+,=@.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Project2 8 | { 9 | class _ 10 | { 11 | _ _; 12 | 13 | _(){}; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /TestCode/Project2/Class1.Partial.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | partial class Partial 4 | { 5 | partial void Foo() 6 | { 7 | } 8 | } 9 | 10 | abstract class Word 11 | { 12 | } 13 | 14 | class DerivedWord : Word 15 | { 16 | void Foo() 17 | { 18 | Word w = new DerivedWord(); 19 | } 20 | } 21 | 22 | //========================================================== 23 | // https://github.com/KirillOsenkov/SourceBrowser/issues/113 24 | //========================================================== 25 | 26 | public interface IAnimal 27 | { 28 | void Eat(); 29 | } 30 | 31 | public abstract class AbstractAnimal 32 | { 33 | public void Eat() { } 34 | } 35 | 36 | public class Giraffe : AbstractAnimal, IAnimal 37 | { 38 | } -------------------------------------------------------------------------------- /TestCode/Project2/Project2.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {C714BCF5-8EEA-4AC8-A030-8D7B1F57E122} 8 | Library 9 | Properties 10 | Project2 11 | Project2 12 | v4.5 13 | 14 | 15 | true 16 | full 17 | false 18 | bin\Debug\ 19 | TRACE;DEBUG;TESTDEFINE 20 | prompt 21 | 4 22 | 23 | 24 | pdbonly 25 | true 26 | bin\Release\ 27 | TRACE 28 | prompt 29 | 4 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /TestCode/TestSolution/Folder/Test.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Folder 8 | { 9 | class Test 10 | { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /TestCode/TestSolution/Program.cs: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /TestCode/TestSolution/TestSolution.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {0F5BA342-6E00-4772-A967-171772206169} 8 | Exe 9 | TestSolution 10 | v4.5 11 | 12 | 13 | true 14 | full 15 | false 16 | bin\Debug\ 17 | DEBUG;TRACE 18 | 19 | 20 | pdbonly 21 | true 22 | bin\Release\ 23 | TRACE 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | {c714bcf5-8eea-4ac8-a030-8d7b1f57e122} 40 | Project2 41 | 42 | 43 | {c714bcf5-8eea-4ac8-a030-8d7b1f57e122} 44 | Project2 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /TestCode/TypeScript/TypeScript.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {0842EE0E-D38E-46DA-B14F-7BDC68EEC424} 8 | Library 9 | Properties 10 | TypeScript 11 | TypeScript 12 | v4.5.2 13 | 512 14 | 15 | 16 | true 17 | full 18 | false 19 | bin\Debug\ 20 | DEBUG;TRACE 21 | prompt 22 | 4 23 | 24 | 25 | pdbonly 26 | true 27 | bin\Release\ 28 | TRACE 29 | prompt 30 | 4 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 56 | -------------------------------------------------------------------------------- /TestCode/TypeScript/analyzerEnv.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | var ActiveXObject: { new(...args: any[]): any } 4 | 5 | declare module Intl { 6 | interface CollatorOptions { 7 | usage?: string; 8 | localeMatcher?: string; 9 | numeric?: boolean; 10 | caseFirst?: string; 11 | sensitivity?: string; 12 | ignorePunctuation?: boolean; 13 | } 14 | } 15 | 16 | interface String { 17 | /** 18 | * Determines whether two strings are equivalent in the current locale. 19 | * @param that String to compare to target string 20 | * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details. 21 | * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details. 22 | */ 23 | localeCompare(that: string, locales: string[], options?: Intl.CollatorOptions): number; 24 | 25 | /** 26 | * Determines whether two strings are equivalent in the current locale. 27 | * @param that String to compare to target string 28 | * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details. 29 | * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details. 30 | */ 31 | localeCompare(that: string, locale: string, options?: Intl.CollatorOptions): number; 32 | } 33 | 34 | module WScript { 35 | var fso: any = new ActiveXObject("Scripting.FileSystemObject"); 36 | var stdout = fso.GetStandardStream(1); 37 | export module Arguments { 38 | export function Item(n: number): any { 39 | throw new Error("NYI"); 40 | } 41 | export var length: number = 0; 42 | } 43 | 44 | export module StdOut { 45 | export function Write(s: string): void { 46 | stdout.Write(s); 47 | } 48 | } 49 | 50 | export var FileName: string = "tsc.js"; 51 | export var ScriptFullName: string = "tsc.js"; 52 | 53 | export function Quit(n: number): void { 54 | } 55 | } -------------------------------------------------------------------------------- /TestCode/VBLibrary/Class1.vb: -------------------------------------------------------------------------------- 1 | Module M 2 | Sub S() 3 | Dim a As Object() 4 | a = New Object() {} 5 | Console.WriteLine(a.Length) 6 | a = New Object(-1) {} 7 | Console.WriteLine(a.Length) 8 | Dim e(-1) As Object 9 | a = e 10 | Console.WriteLine(a.Length) 11 | 12 | Dim x = 13 | 14 | 15 | 16 | 17 | 18 | π 19 | a < 20 | 21 | <%= Nothing %> 22 | 23 | 24 | End Sub 25 | End Module 26 | 27 | Namespace Namespace1 28 | Public Class Class1 29 | Public ReadOnly Property Property1 As String 30 | End Class 31 | End Namespace -------------------------------------------------------------------------------- /TestCode/VBLibrary/VBLibrary.vbproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {D6D0FE59-C578-4C50-B4DC-CDDC56557FB2} 8 | Library 9 | VBLibrary 10 | VBLibrary 11 | 512 12 | Windows 13 | v4.5 14 | 15 | 16 | true 17 | full 18 | true 19 | true 20 | bin\Debug\ 21 | VBLibrary.xml 22 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 23 | 24 | 25 | pdbonly 26 | false 27 | true 28 | true 29 | bin\Release\ 30 | VBLibrary.xml 31 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 32 | 33 | 34 | On 35 | Binary 36 | Off 37 | On 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /TestCode/WildcardIncludes/Program.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/TestCode/WildcardIncludes/Program.cs -------------------------------------------------------------------------------- /TestCode/WildcardIncludes/WildcardIncludes.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {DAFAB23C-9B6A-405C-90F9-2E23F29C3DE0} 8 | Library 9 | WildcardIncludes 10 | WildcardIncludes 11 | v4.5 12 | bin\$(Configuration) 13 | 14 | 15 | AnyCPU 16 | true 17 | full 18 | false 19 | DEBUG;TRACE 20 | prompt 21 | 4 22 | 23 | 24 | AnyCPU 25 | pdbonly 26 | true 27 | TRACE 28 | prompt 29 | 4 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | Subfolder 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /TestCode/WildcardIncludes/WildcardIncludes.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 12.00 2 | # Visual Studio 14 3 | VisualStudioVersion = 14.0.24720.0 4 | MinimumVisualStudioVersion = 10.0.40219.1 5 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WildcardIncludes", "WildcardIncludes.csproj", "{DAFAB23C-9B6A-405C-90F9-2E23F29C3DE0}" 6 | EndProject 7 | Global 8 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 9 | Debug|Mixed Platforms = Debug|Mixed Platforms 10 | Release|Mixed Platforms = Release|Mixed Platforms 11 | EndGlobalSection 12 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 13 | {DAFAB23C-9B6A-405C-90F9-2E23F29C3DE0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU 14 | {DAFAB23C-9B6A-405C-90F9-2E23F29C3DE0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU 15 | {DAFAB23C-9B6A-405C-90F9-2E23F29C3DE0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU 16 | {DAFAB23C-9B6A-405C-90F9-2E23F29C3DE0}.Release|Mixed Platforms.Build.0 = Release|Any CPU 17 | EndGlobalSection 18 | EndGlobal 19 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace WpfApplication1 10 | { 11 | /// 12 | /// Interaction logic for App.xaml 13 | /// 14 | public partial class App : Application 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/CustomControl1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace WpfApplication1 17 | { 18 | /// 19 | /// Follow steps 1a or 1b and then 2 to use this custom control in a XAML file. 20 | /// 21 | /// Step 1a) Using this custom control in a XAML file that exists in the current project. 22 | /// Add this XmlNamespace attribute to the root element of the markup file where it is 23 | /// to be used: 24 | /// 25 | /// xmlns:MyNamespace="clr-namespace:WpfApplication1" 26 | /// 27 | /// 28 | /// Step 1b) Using this custom control in a XAML file that exists in a different project. 29 | /// Add this XmlNamespace attribute to the root element of the markup file where it is 30 | /// to be used: 31 | /// 32 | /// xmlns:MyNamespace="clr-namespace:WpfApplication1;assembly=WpfApplication1" 33 | /// 34 | /// You will also need to add a project reference from the project where the XAML file lives 35 | /// to this project and Rebuild to avoid compilation errors: 36 | /// 37 | /// Right click on the target project in the Solution Explorer and 38 | /// "Add Reference"->"Projects"->[Browse to and select this project] 39 | /// 40 | /// 41 | /// Step 2) 42 | /// Go ahead and use your control in the XAML file. 43 | /// 44 | /// 45 | /// 46 | /// 47 | public class CustomControl1 : Control 48 | { 49 | static CustomControl1() 50 | { 51 | DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl1), new FrameworkPropertyMetadata(typeof(CustomControl1))); 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/Dictionary1.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/FlowDocument1.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace WpfApplication1 17 | { 18 | /// 19 | /// Interaction logic for MainWindow.xaml 20 | /// 21 | public partial class MainWindow : Window 22 | { 23 | public MainWindow() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/Page1.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/Page1.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace WpfApplication1 17 | { 18 | /// 19 | /// Interaction logic for Page1.xaml 20 | /// 21 | public partial class Page1 : Page 22 | { 23 | public Page1() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/PageFunction1.xaml: -------------------------------------------------------------------------------- 1 |  12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/PageFunction1.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace WpfApplication1 17 | { 18 | /// 19 | /// Interaction logic for PageFunction1.xaml 20 | /// 21 | public partial class PageFunction1 : PageFunction 22 | { 23 | public PageFunction1() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Resources; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | using System.Windows; 6 | 7 | // General Information about an assembly is controlled through the following 8 | // set of attributes. Change these attribute values to modify the information 9 | // associated with an assembly. 10 | [assembly: AssemblyTitle("WpfApplication1")] 11 | [assembly: AssemblyDescription("")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("")] 14 | [assembly: AssemblyProduct("WpfApplication1")] 15 | [assembly: AssemblyCopyright("Copyright © 2014")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | 19 | // Setting ComVisible to false makes the types in this assembly not visible 20 | // to COM components. If you need to access a type in this assembly from 21 | // COM, set the ComVisible attribute to true on that type. 22 | [assembly: ComVisible(false)] 23 | 24 | //In order to begin building localizable applications, set 25 | //CultureYouAreCodingWith in your .csproj file 26 | //inside a . For example, if you are using US english 27 | //in your source files, set the to en-US. Then uncomment 28 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 29 | //the line below to match the UICulture setting in the project file. 30 | 31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 32 | 33 | [assembly: ThemeInfo( 34 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 35 | //(used if a resource is not found in the page, 36 | // or application resource dictionaries) 37 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 38 | //(used if a resource is not found in the page, 39 | // app, or any theme specific resource dictionaries) 40 | )] 41 | 42 | // Version information for an assembly consists of the following four values: 43 | // 44 | // Major Version 45 | // Minor Version 46 | // Build Number 47 | // Revision 48 | // 49 | // You can specify all the values or you can default the Build and Revision Numbers 50 | // by using the '*' as shown below: 51 | // [assembly: AssemblyVersion("1.0.*")] 52 | [assembly: AssemblyVersion("1.0.0.0")] 53 | [assembly: AssemblyFileVersion("1.0.0.0")] 54 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.34014 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace WpfApplication1.Properties 12 | { 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WpfApplication1.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.34014 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace WpfApplication1.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/SplashScreen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/TestCode/WpfApplication1/SplashScreen1.png -------------------------------------------------------------------------------- /TestCode/WpfApplication1/Themes/Generic.xaml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 19 | 20 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/UserControl1.xaml: -------------------------------------------------------------------------------- 1 |  8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/UserControl1.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace WpfApplication1 17 | { 18 | /// 19 | /// Interaction logic for UserControl1.xaml 20 | /// 21 | public partial class UserControl1 : UserControl 22 | { 23 | public UserControl1() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/Window1.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /TestCode/WpfApplication1/Window1.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Shapes; 14 | 15 | namespace WpfApplication1 16 | { 17 | /// 18 | /// Interaction logic for Window1.xaml 19 | /// 20 | public partial class Window1 : Window 21 | { 22 | public Window1() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/key.snk -------------------------------------------------------------------------------- /lib/Microsoft.CodeAnalysis.Workspaces.Desktop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/lib/Microsoft.CodeAnalysis.Workspaces.Desktop.dll -------------------------------------------------------------------------------- /src/BuildLogParser/BuildLogParser.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | Microsoft.SourceBrowser.BuildLogParser 4 | net472;netstandard2.0 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/Common/AssertTraceListener.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Linq; 4 | 5 | namespace Microsoft.SourceBrowser.Common 6 | { 7 | #if NET472 8 | public class AssertTraceListener : TraceListener 9 | { 10 | public static void Register() 11 | { 12 | foreach (var existingListener in Debug.Listeners.OfType().ToArray()) 13 | { 14 | if (existingListener is DefaultTraceListener) 15 | { 16 | Debug.Listeners.Remove(existingListener); 17 | } 18 | } 19 | 20 | Debug.Listeners.Add(new AssertTraceListener()); 21 | } 22 | 23 | public override void Fail(string message, string detailMessage) 24 | { 25 | if (message.Contains("This is a soft assert - I don't think this can happen")) 26 | { 27 | return; 28 | } 29 | 30 | if (string.IsNullOrEmpty(message)) 31 | { 32 | message = "ASSERT FAILED"; 33 | } 34 | 35 | if (detailMessage == null) 36 | { 37 | detailMessage = string.Empty; 38 | } 39 | 40 | string stackTrace = new StackTrace(true).ToString(); 41 | 42 | if (stackTrace.Contains("OverriddenOrHiddenMembersHelpers.FindOverriddenOrHiddenMembersInType")) 43 | { 44 | // bug 661370 45 | return; 46 | } 47 | 48 | base.Fail(message, detailMessage); 49 | Log.Exception(message + "\r\n" + detailMessage + "\r\n" + stackTrace); 50 | } 51 | 52 | public override void Write(string message) 53 | { 54 | Log.Write(message); 55 | } 56 | 57 | public override void WriteLine(string message) 58 | { 59 | Log.Write(message); 60 | } 61 | } 62 | #endif 63 | } 64 | -------------------------------------------------------------------------------- /src/Common/Common.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | Microsoft.SourceBrowser.Common 4 | net472;netstandard2.0 5 | true 6 | ..\..\key.snk 7 | 8 | 9 | $(DefineConstants);NET472 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/Common/CustomAppDomainManager.cs: -------------------------------------------------------------------------------- 1 | #if NET472 2 | 3 | using System; 4 | using System.Linq; 5 | using System.Reflection; 6 | using System.Security.Policy; 7 | 8 | namespace Microsoft.SourceBrowser.Common 9 | { 10 | /// 11 | /// We want a callback when an appdomain is created, to install the MSBuildLocator 12 | /// into the XAML markup compilation appdomain and other appdomains, such as ones 13 | /// created by the ResolveCOMReference task. 14 | /// See https://github.com/KirillOsenkov/AppDomainManagerTest 15 | /// 16 | /// 17 | /// This class can't be in the entrypoint assembly because of a CLR bug. 18 | /// We need a way to callback the entrypoint assembly when a new appdomain 19 | /// is created. Let's just instantiate a well-known type from the 20 | /// entrypoint assembly. 21 | /// 22 | public class CustomAppDomainManager : AppDomainManager 23 | { 24 | /// 25 | /// This runs in the old appdomain when a new appdomain is created 26 | /// 27 | public override AppDomain CreateDomain(string friendlyName, Evidence securityInfo, AppDomainSetup appDomainInfo) 28 | { 29 | var result = base.CreateDomain(friendlyName, securityInfo, appDomainInfo); 30 | return result; 31 | } 32 | 33 | /// 34 | /// This runs in the new appdomain very early when it is being initialized 35 | /// 36 | public override void InitializeNewDomain(AppDomainSetup appDomainInfo) 37 | { 38 | base.InitializeNewDomain(appDomainInfo); 39 | NotifyEntrypointAssembly(); 40 | } 41 | 42 | private void NotifyEntrypointAssembly() 43 | { 44 | if (AppDomain.CurrentDomain.IsDefaultAppDomain()) 45 | { 46 | return; 47 | } 48 | 49 | var assembly = Assembly.Load("HtmlGenerator"); 50 | if (assembly == null) 51 | { 52 | return; 53 | } 54 | 55 | var type = assembly.GetType("Microsoft.SourceBrowser.HtmlGenerator.AppDomainInitializer"); 56 | if (type == null) 57 | { 58 | return; 59 | } 60 | 61 | Activator.CreateInstance(type); 62 | } 63 | } 64 | } 65 | 66 | #endif -------------------------------------------------------------------------------- /src/Common/Disposable.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | 4 | namespace Microsoft.SourceBrowser.Common 5 | { 6 | public class Disposable : IDisposable 7 | { 8 | private readonly string actionName; 9 | private readonly Stopwatch stopwatch = Stopwatch.StartNew(); 10 | 11 | private Disposable(string actionName) 12 | { 13 | this.actionName = actionName; 14 | } 15 | 16 | public static IDisposable Timing(string actionName) 17 | { 18 | Log.Write(actionName, ConsoleColor.DarkGray); 19 | return new Disposable(actionName); 20 | } 21 | 22 | public void Dispose() 23 | { 24 | var message = actionName + " complete. Took: " + stopwatch.Elapsed; 25 | Log.Write(message, ConsoleColor.Green); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Common/FileUtilities.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | 4 | namespace Microsoft.SourceBrowser.Common 5 | { 6 | public static class FileUtilities 7 | { 8 | public static void CopyDirectory(string sourceDirectory, string destinationDirectory) 9 | { 10 | if (!Directory.Exists(sourceDirectory)) 11 | { 12 | throw new ArgumentException("Source directory doesn't exist:" + sourceDirectory); 13 | } 14 | 15 | sourceDirectory = sourceDirectory.TrimSlash(); 16 | 17 | if (string.IsNullOrEmpty(destinationDirectory)) 18 | { 19 | throw new ArgumentNullException(nameof(destinationDirectory)); 20 | } 21 | 22 | destinationDirectory = destinationDirectory.TrimSlash(); 23 | 24 | var files = Directory.GetFiles(sourceDirectory, "*.*", SearchOption.AllDirectories); 25 | foreach (var file in files) 26 | { 27 | var relative = file.Substring(sourceDirectory.Length + 1); 28 | var destination = Path.Combine(destinationDirectory, relative); 29 | CopyFile(file, destination); 30 | } 31 | } 32 | 33 | public static void CopyFile(string sourceFilePath, string destinationFilePath, bool overwrite = false) 34 | { 35 | if (!File.Exists(sourceFilePath)) 36 | { 37 | return; 38 | } 39 | 40 | if (!overwrite && File.Exists(destinationFilePath)) 41 | { 42 | return; 43 | } 44 | 45 | var directory = Path.GetDirectoryName(destinationFilePath); 46 | if (!Directory.Exists(directory)) 47 | { 48 | Directory.CreateDirectory(directory); 49 | } 50 | 51 | File.Copy(sourceFilePath, destinationFilePath, overwrite); 52 | File.SetAttributes(destinationFilePath, File.GetAttributes(destinationFilePath) & ~FileAttributes.ReadOnly); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/Common/IsManagedAssembly.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | 4 | namespace Microsoft.SourceBrowser.Common 5 | { 6 | public class PeFileReader 7 | { 8 | public static bool IsManagedAssembly(string fileName) 9 | { 10 | try 11 | { 12 | using (Stream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) 13 | using (BinaryReader binaryReader = new BinaryReader(fileStream)) 14 | { 15 | if (fileStream.Length < 64) 16 | { 17 | return false; 18 | } 19 | 20 | // PE Header starts @ 0x3C (60). Its a 4 byte header. 21 | fileStream.Position = 0x3C; 22 | uint peHeaderPointer = binaryReader.ReadUInt32(); 23 | if (peHeaderPointer == 0) 24 | { 25 | peHeaderPointer = 0x80; 26 | } 27 | 28 | // Ensure there is at least enough room for the following structures: 29 | // 24 byte PE Signature & Header 30 | // 28 byte Standard Fields (24 bytes for PE32+) 31 | // 68 byte NT Fields (88 bytes for PE32+) 32 | // >= 128 byte Data Dictionary Table 33 | if (peHeaderPointer > fileStream.Length - 256) 34 | { 35 | return false; 36 | } 37 | 38 | // Check the PE signature. Should equal 'PE\0\0'. 39 | fileStream.Position = peHeaderPointer; 40 | uint peHeaderSignature = binaryReader.ReadUInt32(); 41 | if (peHeaderSignature != 0x00004550) 42 | { 43 | return false; 44 | } 45 | 46 | // skip over the PEHeader fields 47 | fileStream.Position += 20; 48 | 49 | const ushort PE32 = 0x10b; 50 | const ushort PE32Plus = 0x20b; 51 | 52 | // Read PE magic number from Standard Fields to determine format. 53 | var peFormat = binaryReader.ReadUInt16(); 54 | if (peFormat != PE32 && peFormat != PE32Plus) 55 | { 56 | return false; 57 | } 58 | 59 | // Read the 15th Data Dictionary RVA field which contains the CLI header RVA. 60 | // When this is non-zero then the file contains CLI data otherwise not. 61 | ushort dataDictionaryStart = (ushort)(peHeaderPointer + (peFormat == PE32 ? 232 : 248)); 62 | fileStream.Position = dataDictionaryStart; 63 | 64 | uint cliHeaderRva = binaryReader.ReadUInt32(); 65 | return cliHeaderRva != 0; 66 | } 67 | } 68 | catch (Exception) 69 | { 70 | return false; 71 | } 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/Common/Measure.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | 4 | namespace Microsoft.SourceBrowser.Common 5 | { 6 | public sealed class Measure : IDisposable 7 | { 8 | private readonly Stopwatch stopwatch = Stopwatch.StartNew(); 9 | private readonly string title; 10 | 11 | public static IDisposable Time(string title) 12 | { 13 | return new Measure(title); 14 | } 15 | 16 | private Measure(string title) 17 | { 18 | this.title = title; 19 | } 20 | 21 | public void Dispose() 22 | { 23 | Debug.WriteLine(title + ": " + stopwatch.Elapsed); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /src/Common/MultiDictionary.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Microsoft.SourceBrowser.Common 5 | { 6 | public class MultiDictionary : Dictionary> 7 | { 8 | private readonly IEqualityComparer valueComparer; 9 | 10 | public MultiDictionary() 11 | { 12 | } 13 | 14 | public MultiDictionary(IEqualityComparer keyComparer, IEqualityComparer valueComparer) 15 | : base(keyComparer) 16 | { 17 | this.valueComparer = valueComparer; 18 | } 19 | 20 | public void Add(K key, V value) 21 | { 22 | if (EqualityComparer.Default.Equals(default(K), key)) 23 | { 24 | throw new ArgumentNullException(nameof(key)); 25 | } 26 | 27 | if (!TryGetValue(key, out HashSet bucket)) 28 | { 29 | bucket = new HashSet(valueComparer); 30 | this.Add(key, bucket); 31 | } 32 | 33 | bucket.Add(value); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/Common/Paths.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.IO; 4 | 5 | namespace Microsoft.SourceBrowser.Common 6 | { 7 | public static class Paths 8 | { 9 | public static string BaseAppFolder 10 | { 11 | get 12 | { 13 | return Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName); 14 | } 15 | } 16 | 17 | public static string QuoteIfNeeded(this string path) 18 | { 19 | if (path != null && path.Contains(" ")) 20 | { 21 | path = "\"" + path + "\""; 22 | } 23 | 24 | return path; 25 | } 26 | 27 | public static string TrimSlash(this string path) 28 | { 29 | if (string.IsNullOrEmpty(path)) 30 | { 31 | return path; 32 | } 33 | 34 | return path.TrimEnd('\\'); 35 | } 36 | 37 | public static string MustBeAbsolute(this string path) 38 | { 39 | if (!Path.IsPathRooted(path)) 40 | { 41 | throw new ArgumentException($"Path '{path}' is not absolute.", nameof(path)); 42 | } 43 | 44 | return path; 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/Common/RangeUtilities.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Microsoft.SourceBrowser.Common 5 | { 6 | public static class RangeUtilities 7 | { 8 | public static T[] FillGaps( 9 | string text, 10 | IList ranges, 11 | Func startGetter, 12 | Func lengthGetter, 13 | Func gapFactory) 14 | { 15 | var result = new List(ranges.Count); 16 | int current = 0; 17 | for (int i = 0; i < ranges.Count; i++) 18 | { 19 | var start = startGetter(ranges[i]); 20 | FillGapIfNeeded(current, start, text, result, gapFactory); 21 | 22 | result.Add(ranges[i]); 23 | current = start + lengthGetter(ranges[i]); 24 | } 25 | 26 | FillGapIfNeeded(current, text.Length, text, result, gapFactory); 27 | 28 | return result.ToArray(); 29 | } 30 | 31 | private static void FillGapIfNeeded( 32 | int current, 33 | int start, 34 | string sourceText, 35 | List result, 36 | Func gapFactory) 37 | { 38 | if (start > current) 39 | { 40 | var gapStart = current; 41 | var gapLength = start - gapStart; 42 | result.Add(gapFactory(gapStart, gapLength, sourceText)); 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/GitGlyph/GitGlyph.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Library 5 | net472 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/GitGlyph/GitSourceBrowserPlugin.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.Composition; 4 | using LibGit2Sharp; 5 | using Microsoft.SourceBrowser.MEF; 6 | 7 | namespace GitGlyph 8 | { 9 | [Export(typeof(ISourceBrowserPlugin))] 10 | [ExportMetadata("Name", "Git")] 11 | public class GitSourceBrowserPlugin : ISourceBrowserPlugin, IDisposable 12 | { 13 | private ILog Logger { get; set; } 14 | private readonly List repositoriesToDispose; 15 | 16 | public GitSourceBrowserPlugin() 17 | { 18 | repositoriesToDispose = new List(); 19 | } 20 | 21 | public void Dispose() 22 | { 23 | foreach (var r in repositoriesToDispose) 24 | { 25 | r.Dispose(); 26 | } 27 | } 28 | 29 | public void Init(Dictionary Configuration, ILog logger) 30 | { 31 | Logger = logger; 32 | } 33 | 34 | public IEnumerable ManufactureSymbolVisitors(string projectPath) 35 | { 36 | yield break; 37 | } 38 | 39 | public IEnumerable ManufactureTextVisitors(string projectPath) 40 | { 41 | var path = Repository.Discover(projectPath); 42 | if (path == null) 43 | { 44 | Logger.Warning("Cannot find git repo"); 45 | } 46 | else 47 | { 48 | Repository r = new Repository(path); 49 | repositoriesToDispose.Add(r); 50 | yield return new GitBlameVisitor(r, Logger); 51 | } 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/HtmlGenerator.Tests/HtmlGenerator.Tests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net472 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | PreserveNewest 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/HtmlGenerator.Tests/MSBuildExpressionParserTests.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | 4 | namespace Microsoft.SourceBrowser.HtmlGenerator.Tests 5 | { 6 | [TestClass] 7 | public class MSBuildExpressionParserTests 8 | { 9 | [TestMethod] 10 | public void T1() 11 | { 12 | T(""); 13 | T("a", "a"); 14 | T("$(a)", "$(a)"); 15 | T("$(a", "$(a"); 16 | T("$a)", "$a)"); 17 | T("(a)", "(a)"); 18 | T("$(a())", "$(a())"); 19 | T("$(a()) ", "$(a())", " "); 20 | T(" $(a())", " ", "$(a())"); 21 | T(" $(a()) ", " ", "$(a())", " "); 22 | T("a$(b)c", "a", "$(b)", "c"); 23 | T("a$()c", "a", "$()", "c"); 24 | T("a$(b)c$(d)e", "a", "$(b)", "c", "$(d)", "e"); 25 | T("a$(b$(c))", "a", "$(b", "$(c)", ")"); 26 | T("$(a)$(b)c", "$(a)", "$(b)", "c"); 27 | T("@(a)", "@(a)"); 28 | T("@(a", "@(a"); 29 | T("@a)", "@a)"); 30 | T("(a)", "(a)"); 31 | T("@(a())", "@(a())"); 32 | T("@(a()) ", "@(a())", " "); 33 | T(" @(a())", " ", "@(a())"); 34 | T(" @(a()) ", " ", "@(a())", " "); 35 | T("a@(b)c", "a", "@(b)", "c"); 36 | T("a@()c", "a", "@()", "c"); 37 | T("a@(b)c@(d)e", "a", "@(b)", "c", "@(d)", "e"); 38 | T("a@(b)c$(d)e", "a", "@(b)", "c", "$(d)", "e"); 39 | T("a$(b)c@(d)e", "a", "$(b)", "c", "@(d)", "e"); 40 | T("a@(b@(c))", "a", "@(b", "@(c)", ")"); 41 | T("@(a)@(b)c", "@(a)", "@(b)", "c"); 42 | T("$(a)@(b)c", "$(a)", "@(b)", "c"); 43 | T("@(a)$(b)c", "@(a)", "$(b)", "c"); 44 | T("@(a->b)", "@(a-", ">b)"); 45 | T("@(a->b)", "@(a-", ">b)"); 46 | T("@(a,b)", "@(a,", "b)"); 47 | T("$(a.b)", "$(a.b)"); 48 | T(" @(a->b) ", " ", "@(a-", ">b) "); 49 | } 50 | 51 | private void T(string text, params string[] expectedParts) 52 | { 53 | var actual = MSBuildExpressionParser.SplitStringByPropertiesAndItems(text); 54 | var equal = expectedParts.SequenceEqual(actual); 55 | Assert.IsTrue(equal); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/HtmlGenerator.Tests/MetadataAsSourceUnitTests.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Reflection; 3 | using Microsoft.VisualStudio.TestTools.UnitTesting; 4 | 5 | namespace Microsoft.SourceBrowser.HtmlGenerator.Tests 6 | { 7 | [TestClass] 8 | public class MetadataAsSourceUnitTests 9 | { 10 | //[TestMethod] 11 | public void TestMAS1() 12 | { 13 | var filePath = Assembly.GetExecutingAssembly().Location; 14 | var solution = MetadataAsSource.LoadMetadataAsSourceSolution(filePath); 15 | var project = solution.Projects.First(); 16 | var documents = project.Documents.ToArray(); 17 | var texts = documents.Select(d => d.GetTextAsync().Result.ToString()).ToArray(); 18 | } 19 | 20 | [TestMethod] 21 | public void TestAssemblyAttributes1() 22 | { 23 | var filePath = Assembly.GetExecutingAssembly().Location; 24 | var attributes = MetadataReading.GetAssemblyAttributes(filePath); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/HtmlGenerator.Tests/PrepareRangesTests.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.IO; 3 | using System.Linq; 4 | using System.Reflection; 5 | using Microsoft.VisualStudio.TestTools.UnitTesting; 6 | 7 | namespace Microsoft.SourceBrowser.HtmlGenerator.Tests 8 | { 9 | [TestClass] 10 | public class PrepareRangesTests 11 | { 12 | [TestMethod] 13 | public void TestRanges() 14 | { 15 | T( 16 | "abcdefghijkl", 17 | new Dictionary { { 2, 3 } }, 18 | new Dictionary { { 6, 2 } }, 19 | new Dictionary { { 0, 2 }, { 2, 3 }, { 5, 1 }, { 6, 2 }, { 8, 4 } }); 20 | } 21 | 22 | [TestMethod] 23 | public void TestRemoveOverlappingRanges() 24 | { 25 | const string text = "abcd"; 26 | var actualRanges = TypeScriptSupport.RemoveOverlappingRanges( 27 | text, 28 | new[] { 29 | new ClassifiedRange(text, 0, 2), 30 | new ClassifiedRange(text, 2, 2) 31 | }); 32 | } 33 | 34 | private void T( 35 | string text, 36 | Dictionary syntactic, 37 | Dictionary semantic, 38 | Dictionary expectedOutput) 39 | { 40 | Paths.SolutionDestinationFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 41 | 42 | var expectedArray = expectedOutput.ToArray(); 43 | var result = TypeScriptSupport.PrepareRanges( 44 | syntactic.Select(p => new ClassifiedRange(text, p.Key, p.Value)).ToArray(), 45 | semantic.Select(p => new ClassifiedRange(text, p.Key, p.Value)).ToArray(), 46 | text); 47 | Assert.AreEqual(expectedOutput.Count, result.Length, "Lengths aren't same"); 48 | for (int i = 0; i < expectedOutput.Count; i++) 49 | { 50 | Assert.AreEqual(expectedArray[i].Key, result[i].start); 51 | Assert.AreEqual(expectedArray[i].Value, result[i].length); 52 | } 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/HtmlGenerator.Tests/RedirectFileTests.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.IO; 3 | using System.Linq; 4 | using Microsoft.VisualStudio.TestTools.UnitTesting; 5 | 6 | namespace Microsoft.SourceBrowser.HtmlGenerator.Tests 7 | { 8 | [TestClass] 9 | public class RedirectFileTests 10 | { 11 | //[TestMethod] 12 | public void TestRedirectFileGeneration() 13 | { 14 | var originalFile = @"E:\Index\mscorlib\A.html"; 15 | var lines = File.ReadAllLines(originalFile); 16 | 17 | var list = new List>(); 18 | var map = new Dictionary(); 19 | 20 | foreach (var line in lines) 21 | { 22 | if (line.Length > 25 && line[0] == 'm') 23 | { 24 | if (line[22] == '"') 25 | { 26 | var id = line.Substring(3, 16); 27 | var file = line.Substring(23, line.Length - 25); 28 | list.Add(new KeyValuePair(id, file)); 29 | map[id] = file; 30 | } 31 | else if (line[22] == 'm') 32 | { 33 | var id = line.Substring(3, 16); 34 | var other = line.Substring(25, 16); 35 | list.Add(new KeyValuePair(id, map[other])); 36 | } 37 | } 38 | } 39 | 40 | Microsoft.SourceBrowser.HtmlGenerator.ProjectGenerator.GenerateRedirectFile( 41 | @"E:\Solution", 42 | @"E:\Solution\Project", 43 | list.ToDictionary(kvp => kvp.Key, kvp => (IEnumerable)new List { kvp.Value })); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/HtmlGenerator.Tests/SerializationUnitTests.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UnitTesting; 2 | 3 | namespace Microsoft.SourceBrowser.HtmlGenerator.Tests 4 | { 5 | [TestClass] 6 | public class SerializationUnitTests 7 | { 8 | [TestMethod] 9 | public void TestULongToHexStringRoundtrip() 10 | { 11 | for (int i = 0; i < 1000; i++) 12 | { 13 | var originalStringId = Paths.GetMD5Hash(i.ToString(), 16); 14 | var id = Paths.GetMD5HashULong(i.ToString(), 16); 15 | var stringId = Serialization.ULongToHexString(id); 16 | Assert.AreEqual(originalStringId, stringId); 17 | Assert.AreEqual(16, stringId.Length); 18 | var actualId = Serialization.HexStringToULong(stringId); 19 | Assert.AreEqual(id, actualId); 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/HtmlGenerator.Tests/SymbolIdUnitTests.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UnitTesting; 2 | 3 | namespace Microsoft.SourceBrowser.HtmlGenerator.Tests 4 | { 5 | [TestClass] 6 | public class SymbolIdUnitTests 7 | { 8 | [TestMethod] 9 | public void TestHash() 10 | { 11 | var symbolId = "T:Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol"; 12 | var bytes = Paths.GetMD5Hash(symbolId, 16); 13 | Assert.AreEqual("a7aec3faae7fe65b", bytes); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/HtmlGenerator.Tests/TestNormalize.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using Microsoft.VisualStudio.TestTools.UnitTesting; 5 | 6 | namespace Microsoft.SourceBrowser.HtmlGenerator.Tests 7 | { 8 | [TestClass] 9 | public class NormalizeTests 10 | { 11 | [TestMethod] 12 | public void NormalizeTest1() 13 | { 14 | new TestNormalize 15 | { 16 | AssembliesAndProjects = 17 | { 18 | { "a", "e" }, 19 | { "b", "f" }, 20 | { "c", "d" } 21 | }, 22 | Assemblies = 23 | { 24 | { "a", 1 }, 25 | { "b", 2 }, 26 | { "c", 0 } 27 | }, 28 | Projects = 29 | { 30 | "d", 31 | "e", 32 | "f" 33 | } 34 | }.Verify(); 35 | } 36 | 37 | [TestMethod] 38 | public void NormalizeTest2() 39 | { 40 | new TestNormalize 41 | { 42 | AssembliesAndProjects = 43 | { 44 | { "a", null }, 45 | { "b", "f" }, 46 | { "c", "d" } 47 | }, 48 | Assemblies = 49 | { 50 | { "a", -1 }, 51 | { "b", 1 }, 52 | { "c", 0 } 53 | }, 54 | Projects = 55 | { 56 | "d", 57 | "f" 58 | } 59 | }.Verify(); 60 | } 61 | } 62 | 63 | public class TestNormalize 64 | { 65 | public TupleList AssembliesAndProjects = new TupleList(); 66 | public TupleList Assemblies = new TupleList(); 67 | public List Projects = new List(); 68 | 69 | public void Verify() 70 | { 71 | IEnumerable> actualAssemblies; 72 | IEnumerable actualProjects; 73 | Serialization.Normalize( 74 | AssembliesAndProjects, 75 | out actualAssemblies, 76 | out actualProjects); 77 | Assert.IsTrue(actualAssemblies.SequenceEqual(Assemblies)); 78 | Assert.IsTrue(actualProjects.SequenceEqual(Projects)); 79 | } 80 | } 81 | 82 | public class TupleList : List> 83 | { 84 | public void Add(T1 t1, T2 t2) 85 | { 86 | Add(Tuple.Create(t1, t2)); 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/HtmlGenerator/AppDomainInitializer.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.SourceBrowser.HtmlGenerator 2 | { 3 | public class AppDomainInitializer 4 | { 5 | /// 6 | /// This is called everytime a new appdomain is created in the current process. 7 | /// 8 | public AppDomainInitializer() 9 | { 10 | Microsoft.Build.Locator.MSBuildLocator.RegisterDefaults(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Configuration.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.SourceBrowser.HtmlGenerator 2 | { 3 | public class Configuration 4 | { 5 | // useful knobs to suppress stuff 6 | public static readonly bool GenerateMetadataAsSourceBodies = true; 7 | public static readonly bool CalculateRoslynSemantics = true; 8 | public static readonly bool WriteDocumentsToDisk = true; 9 | public static readonly bool WriteProjectAuxiliaryFilesToDisk = true; 10 | public static readonly bool CreateFoldersOnDisk = true; 11 | public static readonly bool FlattenSolutionExplorer = false; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Pass1-Generation/Classifier.Range.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.CodeAnalysis.Classification; 2 | using Microsoft.CodeAnalysis.Text; 3 | 4 | namespace Microsoft.SourceBrowser.HtmlGenerator 5 | { 6 | public partial class Classification 7 | { 8 | public class Range 9 | { 10 | public ClassifiedSpan ClassifiedSpan; 11 | public string Text; 12 | 13 | public Range() 14 | { 15 | } 16 | 17 | public Range(string classification, TextSpan textSpan, string text) 18 | { 19 | ClassifiedSpan = new ClassifiedSpan(classification, textSpan); 20 | Text = text; 21 | } 22 | 23 | public string ClassificationType => ClassifiedSpan.ClassificationType; 24 | 25 | public TextSpan TextSpan => ClassifiedSpan.TextSpan; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Pass1-Generation/DocumentGenerator.Declarations.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using Microsoft.CodeAnalysis; 3 | 4 | namespace Microsoft.SourceBrowser.HtmlGenerator 5 | { 6 | public partial class DocumentGenerator 7 | { 8 | private HtmlElementInfo ProcessDeclaredSymbol(ISymbol declaredSymbol, bool isLargeFile) 9 | { 10 | if (declaredSymbol.Kind == SymbolKind.Local || 11 | declaredSymbol.Kind == SymbolKind.Parameter || 12 | declaredSymbol.Kind == SymbolKind.TypeParameter) 13 | { 14 | if (isLargeFile) 15 | { 16 | return null; 17 | } 18 | 19 | return HighlightDefinition(declaredSymbol); 20 | } 21 | 22 | var result = GenerateHyperlinkToReferences(declaredSymbol, isLargeFile); 23 | return result; 24 | } 25 | 26 | public HtmlElementInfo GenerateHyperlinkToReferences(ISymbol symbol, bool isLargeFile = false) 27 | { 28 | string symbolId = SymbolIdService.GetId(symbol); 29 | 30 | string referencesFilePath = Path.Combine(ProjectDestinationFolder, Constants.ReferencesFileName, symbolId + ".html"); 31 | string href = Paths.MakeRelativeToFile(referencesFilePath, documentDestinationFilePath); 32 | href = href.Replace('\\', '/'); 33 | 34 | var result = new HtmlElementInfo 35 | { 36 | Name = "a", 37 | Attributes = 38 | { 39 | ["id"] = symbolId, 40 | ["href"] = href, 41 | ["target"] = "n", 42 | }, 43 | DeclaredSymbol = symbol, 44 | DeclaredSymbolId = symbolId 45 | }; 46 | 47 | if (!isLargeFile) 48 | { 49 | var dataGlyph = string.Format("{0},{1}", 50 | SymbolIdService.GetGlyphNumber(symbol), 51 | GetSymbolDepth(symbol)); 52 | result.Attributes.Add("data-glyph", dataGlyph); 53 | } 54 | 55 | return result; 56 | } 57 | 58 | private int GetSymbolDepth(ISymbol symbol) 59 | { 60 | ISymbol current = symbol.ContainingSymbol; 61 | int depth = 0; 62 | while (current != null) 63 | { 64 | if (current is INamespaceSymbol namespaceSymbol) 65 | { 66 | // if we've reached the global namespace, we're already at the top; bail 67 | if (namespaceSymbol.IsGlobalNamespace) 68 | { 69 | break; 70 | } 71 | } 72 | else 73 | { 74 | // we don't want namespaces to add to our "depth" because they won't be displayed in the tree 75 | depth++; 76 | } 77 | 78 | current = current.ContainingSymbol; 79 | } 80 | 81 | return depth; 82 | } 83 | } 84 | } -------------------------------------------------------------------------------- /src/HtmlGenerator/Pass1-Generation/DocumentGenerator.HighlightReferences.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Microsoft.CodeAnalysis; 3 | 4 | namespace Microsoft.SourceBrowser.HtmlGenerator 5 | { 6 | public partial class DocumentGenerator 7 | { 8 | private readonly Dictionary localIds = new Dictionary(); 9 | 10 | private HtmlElementInfo HighlightDefinition(ISymbol declaredSymbol) 11 | { 12 | int localId = GetLocalId(declaredSymbol); 13 | return new HtmlElementInfo 14 | { 15 | Name = "span", 16 | Attributes = 17 | { 18 | { "id", "r" + localId + " rd" + GetClass(declaredSymbol.Kind) }, 19 | { "class", "r" + localId + " r" + GetClass(declaredSymbol.Kind) } 20 | } 21 | }; 22 | } 23 | 24 | private HtmlElementInfo HighlightReference(ISymbol symbol) 25 | { 26 | int localId = GetLocalId(symbol); 27 | return new HtmlElementInfo 28 | { 29 | Name = "span", 30 | Attributes = 31 | { 32 | { "class", "r" + localId + " r" + GetClass(symbol.Kind) } 33 | } 34 | }; 35 | } 36 | 37 | private string GetClass(SymbolKind kind) 38 | { 39 | if (kind == SymbolKind.TypeParameter) 40 | { 41 | return " t"; 42 | } 43 | 44 | return ""; 45 | } 46 | 47 | private int GetLocalId(ISymbol symbol) 48 | { 49 | if (!localIds.TryGetValue(symbol, out int localId)) 50 | { 51 | localId = localIds.Count; 52 | localIds.Add(symbol, localId); 53 | } 54 | 55 | return localId; 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Pass1-Generation/ProjectGenerator.ProjectInfo.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Linq; 3 | using System.Text; 4 | using Microsoft.CodeAnalysis; 5 | using Microsoft.SourceBrowser.Common; 6 | 7 | namespace Microsoft.SourceBrowser.HtmlGenerator 8 | { 9 | public partial class ProjectGenerator 10 | { 11 | public long DocumentCount = 0; 12 | public long LinesOfCode = 0; 13 | public long BytesOfCode = 0; 14 | 15 | private void GenerateProjectInfo() 16 | { 17 | Log.Write("Project info..."); 18 | var projectInfoFile = Path.Combine(ProjectDestinationFolder, Constants.ProjectInfoFileName) + ".txt"; 19 | var namedTypes = this.DeclaredSymbols.Keys.OfType(); 20 | var sb = new StringBuilder(); 21 | sb.Append("ProjectSourcePath=").AppendLine(ProjectSourcePath) 22 | .Append("DocumentCount=").Append(DocumentCount).AppendLine() 23 | .Append("LinesOfCode=").Append(LinesOfCode).AppendLine() 24 | .Append("BytesOfCode=").Append(BytesOfCode).AppendLine() 25 | .Append("DeclaredSymbols=").Append(DeclaredSymbols.Count).AppendLine() 26 | .Append("DeclaredTypes=").Append(namedTypes.Count()).AppendLine() 27 | .Append("PublicTypes=").Append(namedTypes.Count(t => t.DeclaredAccessibility == Accessibility.Public)).AppendLine(); 28 | File.WriteAllText(projectInfoFile, sb.ToString()); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Pass1-Generation/TypeScriptSupport.AnalysisError.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.SourceBrowser.HtmlGenerator 2 | { 3 | public class AnalysisError 4 | { 5 | public string message { get; set; } 6 | public string stack { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Pass1-Generation/TypeScriptSupport.AnalyzedFile.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.SourceBrowser.HtmlGenerator 2 | { 3 | public class AnalyzedFile 4 | { 5 | public string fileName { get; set; } 6 | public ClassifiedRange[] syntacticClassifications { get; set; } 7 | public ClassifiedRange[] semanticClassifications { get; set; } 8 | public string fileSymbolId { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Pass1-Generation/TypeScriptSupport.ClassifiedRange.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.SourceBrowser.HtmlGenerator 2 | { 3 | public class ClassifiedRange 4 | { 5 | // deserialization 6 | public ClassifiedRange() 7 | { 8 | } 9 | 10 | public ClassifiedRange(string text, int start, int length, ClassifiedRange enclosingRange = null) 11 | { 12 | this.text = text.Substring(start, length); 13 | 14 | this.start = start; 15 | this.length = length; 16 | 17 | if (enclosingRange != null) 18 | { 19 | classification = enclosingRange.classification; 20 | hyperlinks = enclosingRange.hyperlinks; 21 | definitionSymbolId = enclosingRange.definitionSymbolId; 22 | definitionKind = enclosingRange.definitionKind; 23 | searchString = enclosingRange.searchString; 24 | fullName = enclosingRange.fullName; 25 | } 26 | } 27 | 28 | public string classification { get; set; } 29 | public int start { get; set; } 30 | public int length { get; set; } 31 | public int end { get { return start + length; } } 32 | public Hyperlink[] hyperlinks { get; set; } 33 | public string definitionSymbolId { get; set; } 34 | public string definitionKind { get; set; } 35 | public string searchString { get; set; } 36 | public string fullName { get; set; } 37 | 38 | public bool IsSemantic { get; set; } 39 | 40 | public string text { get; set; } 41 | public int lineNumber { get; set; } 42 | public int column { get; set; } 43 | public string lineText { get; set; } 44 | 45 | public bool IsSymbolLocalOnly() 46 | { 47 | return 48 | definitionKind == "variable" || 49 | definitionKind == "parameter"; 50 | } 51 | 52 | public override string ToString() 53 | { 54 | return string.Format("{0} ({1};{2}) {3}", text, start, length, classification); 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Pass1-Generation/TypeScriptSupport.Hyperlink.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.SourceBrowser.HtmlGenerator 2 | { 3 | public class Hyperlink 4 | { 5 | public string sourceFile { get; set; } 6 | public int start { get; set; } 7 | public string symbolId { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Pass1-Generation/XamlSupport.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | 3 | namespace Microsoft.SourceBrowser.HtmlGenerator 4 | { 5 | public class XamlSupport : XmlSupport 6 | { 7 | private ProjectGenerator projectGenerator; 8 | private string relativePath; 9 | 10 | public XamlSupport(ProjectGenerator projectGenerator) 11 | { 12 | this.projectGenerator = projectGenerator; 13 | } 14 | 15 | internal void GenerateXaml(string sourceXmlFile, string destinationHtmlFile, string relativePath) 16 | { 17 | this.relativePath = relativePath; 18 | base.Generate(sourceXmlFile, destinationHtmlFile, projectGenerator.SolutionGenerator.SolutionDestinationFolder); 19 | } 20 | 21 | protected override string GetAssemblyName() 22 | { 23 | return projectGenerator.AssemblyName; 24 | } 25 | 26 | protected override string GetDisplayName() 27 | { 28 | return relativePath; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/HtmlGenerator/ProjectSkeleton.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.SourceBrowser.HtmlGenerator 2 | { 3 | public class ProjectSkeleton 4 | { 5 | public string AssemblyName { get; } 6 | public string Name { get; } 7 | 8 | public ProjectSkeleton(string assemblyName, string name) 9 | { 10 | AssemblyName = assemblyName; 11 | Name = name; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /src/HtmlGenerator/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "HtmlGenerator": { 4 | "commandName": "Project", 5 | "commandLineArgs": "$(SolutionDir)TestCode\\TestSolution.sln /out:$(SolutionDir)src\\SourceIndexServer\\index" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /src/HtmlGenerator/SolutionInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Microsoft.SourceBrowser.HtmlGenerator 4 | { 5 | public class SolutionInfo 6 | { 7 | public string SlnPath { get; set; } 8 | public string UrlRoot { get; set; } 9 | public Dictionary MSBuildProperties { get; set; } 10 | public bool NuGetRestore { get; internal set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/HtmlGenerator/SourceBrowser.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SourceBrowser 5 | Generates a website to browse a managed code solution online 6 | 7 | Generates a static HTML website from a managed Visual Studio solution that allows you to search, browse and navigate the C#, VB, MSBuild and TypeScript code online. 8 | 9 | 10 | 11 | 12 | en-US 13 | false 14 | $currentVersion$ 15 | KirillOsenkov 16 | http://www.apache.org/licenses/LICENSE-2.0.html 17 | https://github.com/KirillOsenkov/SourceBrowser 18 | 19 | Roslyn Source Browser 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Utilities/Folder`1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Microsoft.SourceBrowser.HtmlGenerator 5 | { 6 | public class Folder 7 | { 8 | public string Name { get; set; } 9 | public SortedList> Folders { get; set; } 10 | public List Items { get; set; } 11 | 12 | public void Add(T item) 13 | { 14 | if (Items == null) 15 | { 16 | Items = new List(); 17 | } 18 | 19 | Items.Add(item); 20 | } 21 | 22 | public void Sort(Comparison comparison) 23 | { 24 | if (Items != null) 25 | { 26 | Items.Sort((l, r) => comparison(l, r)); 27 | } 28 | 29 | if (Folders != null) 30 | { 31 | foreach (var subfolder in Folders.Values) 32 | { 33 | subfolder.Sort(comparison); 34 | } 35 | } 36 | } 37 | 38 | public Folder GetOrCreateFolder(string folderName) 39 | { 40 | if (Folders == null) 41 | { 42 | Folders = new SortedList>(StringComparer.OrdinalIgnoreCase); 43 | } 44 | 45 | if (!Folders.TryGetValue(folderName, out Folder result)) 46 | { 47 | result = new Folder { Name = folderName }; 48 | Folders.Add(folderName, result); 49 | } 50 | 51 | return result; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Utilities/Glyph.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.CodeAnalysis 2 | { 3 | public enum Glyph 4 | { 5 | None, 6 | 7 | Assembly, 8 | 9 | BasicFile, 10 | BasicProject, 11 | 12 | ClassPublic, 13 | ClassProtected, 14 | ClassPrivate, 15 | ClassInternal, 16 | 17 | CSharpFile, 18 | CSharpProject, 19 | 20 | ConstantPublic, 21 | ConstantProtected, 22 | ConstantPrivate, 23 | ConstantInternal, 24 | 25 | DelegatePublic, 26 | DelegateProtected, 27 | DelegatePrivate, 28 | DelegateInternal, 29 | 30 | EnumPublic, 31 | EnumProtected, 32 | EnumPrivate, 33 | EnumInternal, 34 | 35 | EnumMemberPublic, 36 | EnumMemberProtected, 37 | EnumMemberPrivate, 38 | EnumMemberInternal, 39 | 40 | Error, 41 | StatusInformation, 42 | 43 | EventPublic, 44 | EventProtected, 45 | EventPrivate, 46 | EventInternal, 47 | 48 | ExtensionMethodPublic, 49 | ExtensionMethodProtected, 50 | ExtensionMethodPrivate, 51 | ExtensionMethodInternal, 52 | 53 | FieldPublic, 54 | FieldProtected, 55 | FieldPrivate, 56 | FieldInternal, 57 | 58 | InterfacePublic, 59 | InterfaceProtected, 60 | InterfacePrivate, 61 | InterfaceInternal, 62 | 63 | Intrinsic, 64 | 65 | Keyword, 66 | 67 | Label, 68 | 69 | Local, 70 | 71 | Namespace, 72 | 73 | MethodPublic, 74 | MethodProtected, 75 | MethodPrivate, 76 | MethodInternal, 77 | 78 | ModulePublic, 79 | ModuleProtected, 80 | ModulePrivate, 81 | ModuleInternal, 82 | 83 | OpenFolder, 84 | 85 | Operator, 86 | 87 | Parameter, 88 | 89 | PropertyPublic, 90 | PropertyProtected, 91 | PropertyPrivate, 92 | PropertyInternal, 93 | 94 | RangeVariable, 95 | 96 | Reference, 97 | 98 | StructurePublic, 99 | StructureProtected, 100 | StructurePrivate, 101 | StructureInternal, 102 | 103 | TypeParameter, 104 | 105 | Snippet, 106 | 107 | CompletionWarning, 108 | 109 | AddReference, 110 | NuGet 111 | } 112 | } -------------------------------------------------------------------------------- /src/HtmlGenerator/Utilities/HtmlElementInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Microsoft.CodeAnalysis; 3 | 4 | namespace Microsoft.SourceBrowser.HtmlGenerator 5 | { 6 | public class HtmlElementInfo 7 | { 8 | public string Name { get; set; } 9 | public Dictionary Attributes { get; } 10 | 11 | public ISymbol DeclaredSymbol { get; set; } 12 | public string DeclaredSymbolId { get; set; } 13 | 14 | public HtmlElementInfo() 15 | { 16 | Attributes = new Dictionary(); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/HtmlGenerator/Utilities/PluginLogger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.SourceBrowser.Common; 3 | 4 | namespace Microsoft.SourceBrowser.HtmlGenerator.Utilities 5 | { 6 | public class PluginLogger : MEF.ILog 7 | { 8 | public void Critical(string message, Exception ex = null) 9 | { 10 | if (ex != null) 11 | Log.Exception(ex, message, true); 12 | Log.Exception(message, true); 13 | } 14 | 15 | public void Debug(string message, Exception ex = null) 16 | { 17 | Log.Write(message); 18 | if (ex != null) 19 | Log.Write(ex.Message); //Don't print too much -- this is an unimportant log 20 | } 21 | 22 | public void Error(string message, Exception ex = null) 23 | { 24 | if (ex != null) 25 | Log.Exception(ex, message, true); 26 | Log.Exception(message, true); 27 | } 28 | 29 | public void Fatal(string message, Exception ex = null) 30 | { 31 | if (ex != null) 32 | Log.Exception(ex, message, true); 33 | Log.Exception(message, true); 34 | } 35 | 36 | public void Info(string message, Exception ex = null) 37 | { 38 | Log.Write(message); 39 | if (ex != null) 40 | Log.Write(ex.Message); //Don't print too much -- this is an unimportant log 41 | } 42 | 43 | public void Status(string message, Exception ex = null) 44 | { 45 | Log.Message(message); 46 | if (ex != null) 47 | Log.Message(ex.Message); //Don't print too much -- this is an unimportant log 48 | } 49 | 50 | public void Verbose(string message, Exception ex = null) 51 | { 52 | Log.Write(message); 53 | if (ex != null) 54 | Log.Write(ex.Message); //Don't print too much -- this is an unimportant log 55 | } 56 | 57 | public void Warning(string message, Exception ex = null) 58 | { 59 | if (ex != null) 60 | Log.Exception(ex, message, false); 61 | Log.Exception(message, false); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Utilities/Reference.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | 3 | namespace Microsoft.SourceBrowser.HtmlGenerator 4 | { 5 | public enum ReferenceKind 6 | { 7 | DerivedType, 8 | InterfaceInheritance, 9 | InterfaceImplementation, 10 | Override, 11 | InterfaceMemberImplementation, 12 | Instantiation, 13 | Write, 14 | Read, 15 | Reference, 16 | GuidUsage, 17 | EmptyArrayAllocation, 18 | MSBuildPropertyAssignment, 19 | MSBuildPropertyUsage, 20 | MSBuildItemAssignment, 21 | MSBuildItemUsage, 22 | MSBuildTargetDeclaration, 23 | MSBuildTargetUsage, 24 | MSBuildTaskDeclaration, 25 | MSBuildTaskUsage 26 | } 27 | 28 | public class Reference 29 | { 30 | public string ToAssemblyId { get; set; } 31 | public string FromAssemblyId { get; set; } 32 | public string ToSymbolId { get; set; } 33 | public string FromLocalPath { get; set; } 34 | public string Url { get; set; } 35 | public string ReferenceLineText { get; set; } 36 | public int ReferenceColumnStart { get; set; } 37 | public int ReferenceColumnEnd { get; set; } 38 | public int ReferenceLineNumber { get; set; } 39 | public string ToSymbolName { get; set; } 40 | public ReferenceKind Kind { get; set; } 41 | 42 | public Reference() 43 | { 44 | } 45 | 46 | public Reference(string separatedLine, string sourceLine) 47 | { 48 | var parts = separatedLine.Split(';'); 49 | FromAssemblyId = string.Intern(parts[0]); 50 | Url = parts[1]; 51 | FromLocalPath = parts[2]; 52 | ReferenceLineNumber = int.Parse(parts[3]); 53 | ReferenceColumnStart = int.Parse(parts[4]); 54 | ReferenceColumnEnd = int.Parse(parts[5]); 55 | if (parts.Length >= 7) 56 | { 57 | Kind = (ReferenceKind)int.Parse(parts[6]); 58 | } 59 | 60 | ReferenceLineText = sourceLine; 61 | ToSymbolName = ReferenceLineText.Substring(ReferenceColumnStart, ReferenceColumnEnd - ReferenceColumnStart); 62 | } 63 | 64 | public void WriteTo(TextWriter writer) 65 | { 66 | writer.Write(FromAssemblyId); 67 | writer.Write(';'); 68 | writer.Write(Url); 69 | writer.Write(';'); 70 | writer.Write(FromLocalPath); 71 | writer.Write(';'); 72 | writer.Write(ReferenceLineNumber); 73 | writer.Write(';'); 74 | writer.Write(ReferenceColumnStart); 75 | writer.Write(';'); 76 | writer.Write(ReferenceColumnEnd); 77 | writer.Write(';'); 78 | writer.Write((int)Kind); 79 | writer.WriteLine(); 80 | writer.WriteLine(ReferenceLineText); 81 | } 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Utilities/SymbolKindText.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Microsoft.CodeAnalysis; 4 | 5 | namespace Microsoft.SourceBrowser.HtmlGenerator 6 | { 7 | public class SymbolKindText 8 | { 9 | public const string Assembly = "assembly"; 10 | public const string Type = "type"; 11 | public const string Class = "class"; 12 | public const string Struct = "struct"; 13 | public const string Interface = "interface"; 14 | public const string Enum = "enum"; 15 | public const string Delegate = "delegate"; 16 | public const string Method = "method"; 17 | public const string Property = "property"; 18 | public const string Event = "event"; 19 | public const string Field = "field"; 20 | public const string File = "file"; 21 | public const string Default = "symbol"; 22 | 23 | public static readonly string[] Kinds = 24 | { 25 | Assembly, 26 | Type, 27 | Class, 28 | Struct, 29 | Interface, 30 | Enum, 31 | Delegate, 32 | Method, 33 | Property, 34 | Event, 35 | Field, 36 | File, 37 | }; 38 | private static readonly HashSet hashtable = new HashSet(Kinds); 39 | 40 | public static string GetSymbolKind(ISymbol declaredSymbol) 41 | { 42 | if (declaredSymbol.Kind == SymbolKind.NamedType) 43 | { 44 | return GetTypeKind(declaredSymbol); 45 | } 46 | 47 | return declaredSymbol.Kind.ToString().ToLowerInvariant(); 48 | } 49 | 50 | public static string GetTypeKind(ISymbol declaredSymbol) 51 | { 52 | return ((INamedTypeSymbol)declaredSymbol).TypeKind.ToString().ToLowerInvariant(); 53 | } 54 | 55 | public static ushort Rank(string kind) 56 | { 57 | switch (kind) 58 | { 59 | case SymbolKindText.Class: 60 | case SymbolKindText.Struct: 61 | case SymbolKindText.Interface: 62 | case SymbolKindText.Enum: 63 | case SymbolKindText.Delegate: 64 | return 1; 65 | case SymbolKindText.Field: 66 | return 3; 67 | case SymbolKindText.File: 68 | return 4; 69 | default: 70 | return 2; 71 | } 72 | } 73 | 74 | public static bool IsKnown(string term) 75 | { 76 | return hashtable.Contains(term); 77 | } 78 | 79 | public static bool IsType(string kind) 80 | { 81 | return 82 | kind == Class || 83 | kind == Struct || 84 | kind == Interface || 85 | kind == Enum || 86 | kind == Delegate; 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Utilities/SymbolSorter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Microsoft.SourceBrowser.HtmlGenerator 5 | { 6 | public class SymbolSorter 7 | { 8 | public static void SortSymbols(List declaredSymbols) 9 | { 10 | declaredSymbols.Sort(Sorter); 11 | } 12 | 13 | private static int Sorter(DeclaredSymbolInfo left, DeclaredSymbolInfo right) 14 | { 15 | if (left == right) 16 | { 17 | return 0; 18 | } 19 | 20 | if (left == null || right == null) 21 | { 22 | return 1; 23 | } 24 | 25 | int comparison = StringComparer.OrdinalIgnoreCase.Compare(left.Name, right.Name); 26 | if (comparison != 0) 27 | { 28 | return comparison; 29 | } 30 | 31 | comparison = left.KindRank.CompareTo(right.KindRank); 32 | if (comparison != 0) 33 | { 34 | return comparison; 35 | } 36 | 37 | comparison = StringComparer.Ordinal.Compare(left.Name, right.Name); 38 | if (comparison != 0) 39 | { 40 | return comparison; 41 | } 42 | 43 | comparison = left.AssemblyNumber.CompareTo(right.AssemblyNumber); 44 | return comparison; 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Utilities/WorkspaceHacks.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using Microsoft.CodeAnalysis; 4 | using Microsoft.CodeAnalysis.Host; 5 | 6 | namespace Microsoft.SourceBrowser.HtmlGenerator 7 | { 8 | public static class WorkspaceHacks 9 | { 10 | public static dynamic GetSemanticFactsService(Document document) 11 | { 12 | return GetService(document, "Microsoft.CodeAnalysis.LanguageServices.ISemanticFactsService", "Microsoft.CodeAnalysis.Workspaces"); 13 | } 14 | 15 | public static dynamic GetSyntaxFactsService(Document document) 16 | { 17 | return GetService(document, "Microsoft.CodeAnalysis.LanguageServices.ISyntaxFactsService", "Microsoft.CodeAnalysis.Workspaces"); 18 | } 19 | 20 | public static object GetMetadataAsSourceService(Document document) 21 | { 22 | var language = document.Project.Language; 23 | var workspace = document.Project.Solution.Workspace; 24 | var serviceAssembly = Assembly.Load("Microsoft.CodeAnalysis.Features"); 25 | var serviceInterfaceType = serviceAssembly.GetType("Microsoft.CodeAnalysis.MetadataAsSource.IMetadataAsSourceService"); 26 | var result = GetService(workspace, language, serviceInterfaceType); 27 | return result; 28 | } 29 | 30 | private static object GetService(Workspace workspace, string language, Type serviceType) 31 | { 32 | var languageServices = workspace.Services.GetLanguageServices(language); 33 | var languageServicesType = typeof(HostLanguageServices); 34 | var genericMethod = languageServicesType.GetMethod("GetService", BindingFlags.Public | BindingFlags.Instance); 35 | var closedGenericMethod = genericMethod.MakeGenericMethod(serviceType); 36 | var result = closedGenericMethod.Invoke(languageServices, new object[0]); 37 | if (result == null) 38 | { 39 | throw new NullReferenceException("Unable to get language service: " + serviceType.FullName + " for " + language); 40 | } 41 | 42 | return result; 43 | } 44 | 45 | private static object GetService(Document document, string serviceType, string assemblyName) 46 | { 47 | var assembly = typeof(Document).Assembly; 48 | var documentExtensions = assembly.GetType("Microsoft.CodeAnalysis.Shared.Extensions.DocumentExtensions"); 49 | var serviceAssembly = Assembly.Load(assemblyName); 50 | var serviceInterfaceType = serviceAssembly.GetType(serviceType); 51 | var getLanguageServiceMethod = documentExtensions.GetMethod("GetLanguageService", new Type[] { typeof(Document) }); 52 | getLanguageServiceMethod = getLanguageServiceMethod.MakeGenericMethod(serviceInterfaceType); 53 | var service = getLanguageServiceMethod.Invoke(null, new object[] { document }); 54 | return service; 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/HtmlGenerator/Utilities/XmlDocumentationProvider.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Globalization; 3 | using System.Threading; 4 | using System.Xml.Linq; 5 | using Microsoft.CodeAnalysis; 6 | 7 | namespace Microsoft.SourceBrowser.HtmlGenerator 8 | { 9 | public class XmlDocumentationProvider : DocumentationProvider 10 | { 11 | private readonly Dictionary members = new Dictionary(); 12 | 13 | public XmlDocumentationProvider(string filePath) 14 | { 15 | var xmlDocFile = XDocument.Load(filePath); 16 | 17 | foreach (var member in xmlDocFile.Descendants("member")) 18 | { 19 | var id = member.Attribute("name").Value; 20 | var value = member.ToString(); 21 | 22 | // there might be multiple entries with same id, just pick one at random 23 | members[id] = value; 24 | } 25 | } 26 | 27 | protected override string GetDocumentationForSymbol( 28 | string documentationMemberID, 29 | CultureInfo preferredCulture, 30 | CancellationToken cancellationToken = default(CancellationToken)) 31 | { 32 | members.TryGetValue(documentationMemberID, out string result); 33 | return result; 34 | } 35 | 36 | public override int GetHashCode() 37 | { 38 | return members.GetHashCode(); 39 | } 40 | 41 | public override bool Equals(object obj) 42 | { 43 | return this == obj; 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /src/HtmlGenerator/Web/index/AffiliateLinks.txt: -------------------------------------------------------------------------------- 1 | http://stackoverflow.com/search?q= 2 | http://social.msdn.microsoft.com/Search/en-US?query= 3 | https://www.google.com/search?q= 4 | http://www.bing.com/search?q= -------------------------------------------------------------------------------- /src/HtmlGenerator/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/MEF/ContextKeys.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.SourceBrowser.MEF 2 | { 3 | public static class ContextKeys 4 | { 5 | public const string FilePath = "FilePath"; 6 | public const string LineNumber = "LineNumber"; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/MEF/ILog.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Microsoft.SourceBrowser.MEF 4 | { 5 | public interface ILog 6 | { 7 | void Debug(string message, Exception ex = null); 8 | void Verbose(string message, Exception ex = null); 9 | void Info(string message, Exception ex = null); 10 | void Status(string message, Exception ex = null); 11 | void Warning(string message, Exception ex = null); 12 | void Error(string message, Exception ex = null); 13 | void Critical(string message, Exception ex = null); 14 | void Fatal(string message, Exception ex = null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/MEF/ISourceBrowserPlugin.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Microsoft.SourceBrowser.MEF 4 | { 5 | public interface ISourceBrowserPlugin 6 | { 7 | void Init(Dictionary configuration, ILog logger); 8 | IEnumerable ManufactureSymbolVisitors(string projectPath); 9 | IEnumerable ManufactureTextVisitors(string projectPath); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/MEF/ISourceBrowserPluginMetadata.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.SourceBrowser.MEF 2 | { 3 | public interface ISourceBrowserPluginMetadata 4 | { 5 | string Name { get; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/MEF/ISymbolVisitor.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Microsoft.CodeAnalysis; 3 | 4 | namespace Microsoft.SourceBrowser.MEF 5 | { 6 | public interface ISymbolVisitor 7 | { 8 | string VisitAlias(IAliasSymbol symbol, IReadOnlyDictionary context); 9 | string VisitArrayType(IArrayTypeSymbol symbol, IReadOnlyDictionary context); 10 | string VisitAssembly(IAssemblySymbol symbol, IReadOnlyDictionary context); 11 | string VisitDynamicType(IDynamicTypeSymbol symbol, IReadOnlyDictionary context); 12 | string VisitEvent(IEventSymbol symbol, IReadOnlyDictionary context); 13 | string VisitField(IFieldSymbol symbol, IReadOnlyDictionary context); 14 | string VisitLabel(ILabelSymbol symbol, IReadOnlyDictionary context); 15 | string VisitLocal(ILocalSymbol symbol, IReadOnlyDictionary context); 16 | string VisitMethod(IMethodSymbol symbol, IReadOnlyDictionary context); 17 | string VisitModule(IModuleSymbol symbol, IReadOnlyDictionary context); 18 | string VisitNamedType(INamedTypeSymbol symbol, IReadOnlyDictionary context); 19 | string VisitNamespace(INamespaceSymbol symbol, IReadOnlyDictionary context); 20 | string VisitParameter(IParameterSymbol symbol, IReadOnlyDictionary context); 21 | string VisitPointerType(IPointerTypeSymbol symbol, IReadOnlyDictionary context); 22 | string VisitProperty(IPropertySymbol symbol, IReadOnlyDictionary context); 23 | string VisitRangeVariable(IRangeVariableSymbol symbol, IReadOnlyDictionary context); 24 | string VisitTypeParameter(ITypeParameterSymbol symbol, IReadOnlyDictionary context); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/MEF/ITextVisitor.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Microsoft.SourceBrowser.MEF 4 | { 5 | public interface ITextVisitor 6 | { 7 | string Visit(string text, IReadOnlyDictionary context); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/MEF/MEF.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net472 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | all 15 | runtime; build; native; contentfiles; analyzers 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/MEF/SourceBrowserPluginWrapper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Reflection; 7 | 8 | namespace Microsoft.SourceBrowser.MEF 9 | { 10 | /// 11 | /// A wrapper around MEF-imported objects to prevent exceptions from bubbling up 12 | /// 13 | public class SourceBrowserPluginWrapper : ISourceBrowserPlugin, ISourceBrowserPluginMetadata 14 | { 15 | private ISourceBrowserPluginMetadata Metadata; 16 | private ISourceBrowserPlugin Plugin; 17 | private ILog Logger; 18 | 19 | public SourceBrowserPluginWrapper(ISourceBrowserPlugin plugin, ISourceBrowserPluginMetadata metadata, ILog logger) 20 | { 21 | Plugin = plugin; 22 | Metadata = metadata; 23 | Logger = logger; 24 | } 25 | 26 | public string Name 27 | { 28 | get 29 | { 30 | try 31 | { 32 | return Metadata.Name; 33 | } 34 | catch (Exception ex) 35 | { 36 | Logger.Info("Couldn't retrieve plugin name", ex); 37 | return "Unknown Plugin"; 38 | } 39 | } 40 | } 41 | 42 | public void Init(Dictionary configuration, ILog logger) 43 | { 44 | try 45 | { 46 | Plugin.Init(configuration, logger); 47 | } 48 | catch (Exception ex) 49 | { 50 | Logger.Info(Name + " plugin failed to initialize", ex); 51 | } 52 | } 53 | 54 | public IEnumerable ManufactureSymbolVisitors(string projectPath) 55 | { 56 | try 57 | { 58 | return Plugin.ManufactureSymbolVisitors(projectPath); 59 | } 60 | catch (Exception ex) 61 | { 62 | Logger.Info(Name + " plugin failed to manufacture symbol visitors", ex); 63 | return Enumerable.Empty(); 64 | } 65 | } 66 | 67 | public IEnumerable ManufactureTextVisitors(string projectPath) 68 | { 69 | try 70 | { 71 | return Plugin.ManufactureTextVisitors(projectPath); 72 | } 73 | catch (Exception ex) 74 | { 75 | Logger.Info(Name + " plugin failed to manufacture text visitors", ex); 76 | return Enumerable.Empty(); 77 | } 78 | } 79 | 80 | public Module PluginModule => Plugin.GetType().Module; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/SourceIndexServer.Tests/SourceIndexServer.Tests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | PreserveNewest 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/SourceIndexServer/Models/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.SourceBrowser.SourceIndexServer 2 | { 3 | public struct AssemblyInfo 4 | { 5 | public string AssemblyName; 6 | public short ProjectKey; 7 | public short ReferencingAssembliesCount; 8 | 9 | public AssemblyInfo(string line) 10 | { 11 | var parts = line.Split(';'); 12 | AssemblyName = parts[0]; 13 | ProjectKey = short.Parse(parts[1]); 14 | ReferencingAssembliesCount = short.Parse(parts[2]); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/SourceIndexServer/Models/Constants.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.SourceBrowser.SourceIndexServer 2 | { 3 | public class Constants 4 | { 5 | public static readonly string MasterAssemblyMap = "Assemblies"; 6 | public static readonly string MasterProjectMap = "Projects"; 7 | public static readonly string MSBuildPropertiesAssembly = "MSBuildProperties"; 8 | public static readonly string MSBuildItemsAssembly = "MSBuildItems"; 9 | public static readonly string MSBuildTargetsAssembly = "MSBuildTargets"; 10 | public static readonly string MSBuildTasksAssembly = "MSBuildTasks"; 11 | public static readonly string ReferencesFileName = "R"; 12 | public static readonly string GuidAssembly = "GuidAssembly"; 13 | } 14 | } -------------------------------------------------------------------------------- /src/SourceIndexServer/Models/DeclaredSymbolInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Microsoft.SourceBrowser.SourceIndexServer 4 | { 5 | public class DeclaredSymbolInfo : IEquatable 6 | { 7 | public ushort AssemblyNumber; 8 | public string AssemblyName { get; set; } 9 | public string ProjectFilePath { get; set; } 10 | public ushort Glyph; 11 | public string Name; 12 | public ulong ID; 13 | public string Kind; 14 | public string Description; 15 | public ushort MatchLevel; 16 | 17 | public DeclaredSymbolInfo() 18 | { 19 | } 20 | 21 | public ushort KindRank 22 | { 23 | get 24 | { 25 | return SymbolKindText.Rank(Kind); 26 | } 27 | } 28 | 29 | public string GetNamespace() 30 | { 31 | var description = Description; 32 | if (string.IsNullOrEmpty(description)) 33 | { 34 | return ""; 35 | } 36 | 37 | int lastDot = description.LastIndexOf('.'); 38 | if (lastDot == -1) 39 | { 40 | return ""; 41 | } 42 | 43 | return description.Substring(0, lastDot); 44 | } 45 | 46 | public int Weight 47 | { 48 | get 49 | { 50 | return MatchLevel * 10 + KindRank; 51 | } 52 | } 53 | 54 | public bool Equals(DeclaredSymbolInfo other) 55 | { 56 | if (other == null) 57 | { 58 | return false; 59 | } 60 | 61 | return 62 | AssemblyNumber == other.AssemblyNumber && 63 | ProjectFilePath == other.ProjectFilePath && 64 | Glyph == other.Glyph && 65 | Name == other.Name && 66 | Kind == other.Kind && 67 | ID == other.ID && 68 | Description == other.Description; 69 | } 70 | 71 | public string GetUrl() 72 | { 73 | return "/" + AssemblyName + "/a.html#" + Serialization.ULongToHexString(ID); 74 | } 75 | 76 | public override bool Equals(object obj) 77 | { 78 | DeclaredSymbolInfo other = obj as DeclaredSymbolInfo; 79 | if (other == null) 80 | { 81 | return false; 82 | } 83 | 84 | return Equals(other); 85 | } 86 | 87 | public override int GetHashCode() 88 | { 89 | return 90 | AssemblyNumber.GetHashCode() ^ 91 | ProjectFilePath.GetHashCode() ^ 92 | Glyph.GetHashCode() ^ 93 | Name.GetHashCode() ^ 94 | Kind.GetHashCode() ^ 95 | Description.GetHashCode() ^ 96 | ID.GetHashCode(); 97 | } 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /src/SourceIndexServer/Models/SymbolKindText.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Microsoft.SourceBrowser.SourceIndexServer 4 | { 5 | public class SymbolKindText 6 | { 7 | public const string Assembly = "assembly"; 8 | public const string Type = "type"; 9 | public const string Class = "class"; 10 | public const string Struct = "struct"; 11 | public const string Interface = "interface"; 12 | public const string Enum = "enum"; 13 | public const string Delegate = "delegate"; 14 | public const string Method = "method"; 15 | public const string Property = "property"; 16 | public const string Event = "event"; 17 | public const string Field = "field"; 18 | public const string File = "file"; 19 | public const string MSBuildProperty = "MSBuildProperty"; 20 | public const string MSBuildItem = "MSBuildItem"; 21 | public const string MSBuildTarget = "MSBuildTarget"; 22 | public const string MSBuildTask = "MSBuildTask"; 23 | public const string Default = "symbol"; 24 | 25 | public static readonly string[] Kinds = 26 | { 27 | Assembly, 28 | Type, 29 | Class, 30 | Struct, 31 | Interface, 32 | Enum, 33 | Delegate, 34 | Method, 35 | Property, 36 | Event, 37 | Field, 38 | File, 39 | MSBuildProperty, 40 | MSBuildItem, 41 | MSBuildTarget, 42 | MSBuildTask, 43 | }; 44 | private static readonly HashSet hashtable = new HashSet(Kinds); 45 | 46 | public static ushort Rank(string kind) 47 | { 48 | switch (kind) 49 | { 50 | case Class: 51 | case Struct: 52 | case Interface: 53 | case Enum: 54 | case Delegate: 55 | return 1; 56 | case Field: 57 | return 3; 58 | case File: 59 | return 4; 60 | default: 61 | return 2; 62 | } 63 | } 64 | 65 | public static bool IsKnown(string term) 66 | { 67 | return hashtable.Contains(term); 68 | } 69 | 70 | public static bool IsType(string kind) 71 | { 72 | return 73 | kind == Class || 74 | kind == Struct || 75 | kind == Interface || 76 | kind == Enum || 77 | kind == Delegate; 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/SourceIndexServer/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace Microsoft.SourceBrowser.SourceIndexServer 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | BuildWebHost(args).Run(); 11 | } 12 | 13 | public static IWebHost BuildWebHost(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup() 16 | .Build(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/SourceIndexServer/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:58320/", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "SourceIndexServer": { 19 | "commandName": "Project", 20 | "launchBrowser": true, 21 | "environmentVariables": { 22 | "ASPNETCORE_ENVIRONMENT": "Development" 23 | }, 24 | "applicationUrl": "http://localhost:58321" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/SourceIndexServer/SourceIndexServer.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | Microsoft.SourceBrowser.SourceIndexServer 6 | Microsoft.SourceBrowser.SourceIndexServer 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/SourceIndexServer/Startup.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using Microsoft.AspNetCore.Builder; 3 | using Microsoft.AspNetCore.Hosting; 4 | using Microsoft.Extensions.DependencyInjection; 5 | using Microsoft.Extensions.FileProviders; 6 | using Microsoft.SourceBrowser.SourceIndexServer.Models; 7 | 8 | namespace Microsoft.SourceBrowser.SourceIndexServer 9 | { 10 | public class Startup 11 | { 12 | public Startup(IHostingEnvironment env) 13 | { 14 | Environment = env; 15 | } 16 | 17 | public IHostingEnvironment Environment { get; } 18 | 19 | // This method gets called by the runtime. Use this method to add services to the container. 20 | // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 21 | public void ConfigureServices(IServiceCollection services) 22 | { 23 | RootPath = Path.Combine(Environment.ContentRootPath, "Index"); 24 | 25 | var subfolder = Path.Combine(RootPath, "Index"); 26 | if (File.Exists(Path.Combine(subfolder, "Projects.txt"))) 27 | { 28 | RootPath = subfolder; 29 | } 30 | 31 | services.AddSingleton(new Index(RootPath)); 32 | services.AddMvc(); 33 | } 34 | 35 | public string RootPath { get; set; } 36 | 37 | // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 38 | public void Configure(IApplicationBuilder app, IHostingEnvironment env) 39 | { 40 | app.Use(async (context, next) => 41 | { 42 | context.Response.Headers["X-UA-Compatible"] = "IE=edge"; 43 | await next(); 44 | }); 45 | 46 | if (env.IsDevelopment()) 47 | { 48 | app.UseDeveloperExceptionPage(); 49 | } 50 | 51 | app.UseDefaultFiles(); 52 | app.UseStaticFiles(new StaticFileOptions 53 | { 54 | FileProvider = new PhysicalFileProvider(RootPath), 55 | }); 56 | app.UseStaticFiles(); 57 | app.UseMvc(); 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/0.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/1.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/10.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/100.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/101.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/102.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/102.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/103.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/103.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/104.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/104.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/105.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/105.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/106.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/106.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/107.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/107.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/108.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/108.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/109.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/109.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/11.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/110.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/110.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/111.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/111.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/112.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/112.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/113.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/113.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/114.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/115.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/115.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/116.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/116.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/117.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/117.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/118.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/118.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/119.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/119.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/12.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/120.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/121.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/121.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/122.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/122.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/123.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/123.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/124.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/124.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/125.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/126.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/126.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/127.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/127.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/128.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/129.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/129.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/13.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/130.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/130.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/131.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/131.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/132.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/132.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/133.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/133.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/134.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/134.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/135.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/135.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/136.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/137.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/137.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/138.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/138.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/139.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/139.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/14.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/140.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/140.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/141.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/141.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/142.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/142.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/143.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/143.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/144.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/145.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/145.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/146.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/146.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/147.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/147.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/148.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/148.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/149.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/149.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/15.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/150.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/151.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/151.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/152.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/153.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/153.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/154.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/154.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/155.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/155.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/156.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/156.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/157.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/157.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/158.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/158.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/159.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/159.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/16.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/160.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/160.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/161.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/161.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/162.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/162.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/163.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/163.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/164.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/164.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/165.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/165.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/166.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/166.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/167.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/168.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/168.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/169.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/169.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/17.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/170.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/170.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/171.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/171.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/172.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/172.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/173.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/173.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/174.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/174.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/175.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/175.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/176.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/176.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/177.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/177.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/178.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/178.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/179.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/179.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/18.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/180.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/181.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/181.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/182.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/182.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/183.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/183.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/184.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/184.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/185.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/185.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/186.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/186.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/187.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/187.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/188.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/188.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/189.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/189.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/19.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/190.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/190.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/191.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/191.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/192.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/193.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/193.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/194.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/194.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/195.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/195.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/196.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/196.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/197.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/197.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/198.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/198.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/199.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/199.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/2.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/20.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/200.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/201.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/201.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/202.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/202.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/203.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/203.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/204.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/204.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/205.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/205.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/206.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/206.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/207.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/207.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/208.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/208.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/209.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/209.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/21.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/210.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/210.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/211.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/211.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/212.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/212.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/213.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/213.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/214.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/214.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/215.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/215.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/216.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/216.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/217.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/217.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/218.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/218.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/219.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/219.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/22.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/220.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/220.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/221.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/221.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/222.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/222.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/223.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/223.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/224.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/224.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/225.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/225.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/226.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/226.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/227.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/227.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/228.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/228.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/229.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/229.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/23.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/230.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/230.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/231.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/231.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/232.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/232.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/233.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/233.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/234.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/234.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/235.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/235.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/24.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/25.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/26.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/27.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/28.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/29.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/3.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/30.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/31.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/32.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/33.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/34.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/35.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/36.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/37.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/38.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/39.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/4.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/40.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/41.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/42.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/43.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/44.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/45.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/46.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/47.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/48.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/49.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/5.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/50.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/51.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/52.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/53.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/53.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/54.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/54.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/55.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/56.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/56.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/57.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/58.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/59.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/6.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/60.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/61.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/61.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/62.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/62.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/63.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/63.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/64.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/65.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/66.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/67.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/68.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/68.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/69.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/69.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/7.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/70.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/71.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/71.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/72.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/73.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/73.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/74.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/74.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/75.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/75.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/76.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/77.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/77.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/78.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/78.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/79.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/79.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/8.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/80.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/81.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/81.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/82.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/82.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/83.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/83.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/84.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/84.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/85.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/85.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/86.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/87.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/88.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/89.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/89.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/9.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/90.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/91.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/91.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/92.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/92.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/93.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/93.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/94.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/94.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/95.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/95.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/96.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/97.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/97.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/98.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/98.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/99.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/99.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/CSharpProjectExplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/CSharpProjectExplorer.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/DocumentOutline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/DocumentOutline.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/NamespaceExplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/NamespaceExplorer.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/VBProjectExplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/VBProjectExplorer.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/csharp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/csharp.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/dotnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/dotnet.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/help.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/microsoftlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/microsoftlogo.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/minus.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/plus.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/searchmagnifyingglass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/searchmagnifyingglass.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/typescript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/typescript.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/vb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/vb.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/content/icons/xaml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/content/icons/xaml.png -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/documentoutline.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Document Outline 5 | 6 | 7 | 8 | 9 |
Outline
10 |
11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/SourceBrowser/4b8c1b8b656cd26f635872469c515d52273952bd/src/SourceIndexServer/wwwroot/favicon.ico -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/header.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Header 5 | 6 | 7 | 8 | 9 | 10 | 11 | 17 | Source Browser 18 | 19 | 20 | Help 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/SourceIndexServer/wwwroot/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Source Browser 6 | 7 | 8 | 9 | 12 | 16 | 22 | 27 | 32 | 33 | 34 | 35 | --------------------------------------------------------------------------------