{"id":18088007,"url":"https://github.com/slaks/ref12","last_synced_at":"2025-04-13T02:29:33.810Z","repository":{"id":14434544,"uuid":"17145886","full_name":"SLaks/Ref12","owner":"SLaks","description":"Sends F12 in Visual Studio to the new .Net Reference Source Browser","archived":false,"fork":false,"pushed_at":"2022-02-12T18:44:32.000Z","size":2754,"stargazers_count":75,"open_issues_count":9,"forks_count":21,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-26T20:01:38.973Z","etag":null,"topics":["c-sharp","roslyn","visual-studio","vs-extension"],"latest_commit_sha":null,"homepage":"http://visualstudiogallery.msdn.microsoft.com/f89b27c5-7d7b-4059-adde-7ccc709fa86e","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SLaks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-02-24T18:20:37.000Z","updated_at":"2025-02-05T15:40:22.000Z","dependencies_parsed_at":"2022-09-08T11:21:31.624Z","dependency_job_id":null,"html_url":"https://github.com/SLaks/Ref12","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SLaks%2FRef12","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SLaks%2FRef12/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SLaks%2FRef12/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SLaks%2FRef12/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SLaks","download_url":"https://codeload.github.com/SLaks/Ref12/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248657749,"owners_count":21140839,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-sharp","roslyn","visual-studio","vs-extension"],"created_at":"2024-10-31T17:10:19.744Z","updated_at":"2025-04-13T02:29:33.776Z","avatar_url":"https://github.com/SLaks.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ref12\n\nThis Visual Studio extension intercepts the Go To Definition command (F12) and forwards to the new [.Net Reference Source Browser](http://referencesource-beta.microsoft.com/).\nSimply [install the extension](http://visualstudiogallery.msdn.microsoft.com/f89b27c5-7d7b-4059-adde-7ccc709fa86e) from the gallery on Visual Studio 2010 or later, place the cursor on any class or member in the .Net framework, and press F12 to see beautiful, hyperlinked source code, complete with original comments  (thanks to [Kirill Osenkov](https://twitter.com/KirillOsenkov) for his amazing work on this web app).\nNo more \"From Metadata\" tabs! \n\n**Now with VB support!**\n\n_VB support may be less reliable_; I needed to delve more deeply into the undocumented syntax tree APIs and may have missed some cases.  \nIf you notice that F12 isn't working when it should or if it jumps to the wrong method, please file a bug, and include the full line of VB source that you pressed F12 on.\n\n## Known Issues\n\n - The reference source code does not support links to overloaded operators, so F12 on operators is not handled.\n - C#: F12 in Metadata as Source tabs (from assemblies without source) does not work on VS2012 or 2010.  I can't find any way to get the compilation for these tabs from the language service.\n - VB: Type inference on lambda expression parameters does not work; inferred parameters will be incorrectly resolved to `Object`.  This muight be solvable by binding the parent SyntaxNode and walking down the bound tree.\n - VB: F12 on attribute properties does not work.  I cannot find any way to resolve them to symbols.\n - VB: F12 on `As New` constructor references does not work.\n\n## Implementation\nThis extension uses undocumented APIs from the native C# language services to find the [RQName](http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivsrefactornotify.aspx#remarksToggle \"Refactor-Qualified Name\") of the identifier under the cursor, checks if it's defined in an assembly included in the Reference Source ([list](http://referencesource-beta.microsoft.com/assemblies.txt)), and opens the correct URL in a browser.\n\nIt uses MEF to import `IReferenceSourceProvider` instances that can navigate to members in specific assemblies; you can export implementations of this interface to add other external source providers.\n\nTo allow classes to inherit types in unversioned assemblies, the native VB implementation is in a separate Ref12.Unversioned assembly, so that I can add my AssemblyResolve handler without MEF trying to load those types.\n\nBecause Roslyn references newer versions of the VS editor assemblies, the Roslyn `ISymbolResolver` implementation lives in a separate assembly, to avoid compiler version conflicts.  This assembly is loaded at runtime if Roslyn is detected.  This also includes a Roslyn DLL file which is not (yet?) available on NuGet, but which is required to get a `Document` from a TextBuffer.\n\n**Pull requests welcome**\n\n![F12 to .Net Reference Source](http://i1.visualstudiogallery.msdn.s-msft.com/f89b27c5-7d7b-4059-adde-7ccc709fa86e/image/file/125181/1/ref12%20screenshot.png)\n\n# License\n[MIT](http://opensource.org/licenses/MIT)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslaks%2Fref12","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslaks%2Fref12","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslaks%2Fref12/lists"}