I managed to get close enough to what I wanted by creating a Visual Studio plugin with a standalone Owin server providing basic WebApi.
This allowed me to open files from a browser with the link: http: // localhost: 9000 / VisualStudioApi / OpenFile? Path =. \ Url \ Escaped \ Path \ Relative \ To \ Solution \ File

Any web server hosting this button will have to hardlink the links to http://localhost:9000 , which causes a problem with launching multiple instances of Visual Studio, so there should be some logic on how to map the .sln file with famous port. But the missing official Visual Studio solution, this does the job for the most part.
In case this helps someone in the future, here are the code snippets:
VS package
[ComVisible(true)] [Guid("B77F7C65-0F9F-422A-A897-C06FDAEC9604")] [ProvideObject(typeof(InitializerPackage))] [ProvideAutoLoad(UIContextGuids80.SolutionExists)] public class InitializerPackage : Package { protected override void Initialize() { base.Initialize();
Owin Initializer
public static class OwinVisualStudioApiListenerManager { private static IDisposable _runningServer; public static DTE2 VisualStudioApi { get; set; } public static void StartServer(DTE2 visualStudioApi) { if (null != _runningServer) _runningServer.Dispose(); VisualStudioApi = visualStudioApi;
Webapi
public class VisualStudioApiController : ApiController {
source share