using Microsoft.VisualStudio; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; using System; using System.Runtime.InteropServices; [Guid("D1A5D9FA-32F0-4001-BDD2-BB3D50F4E6C3")] public class SqlEditorFactory : IVsEditorFactory { private ServiceProvider _serviceProvider; public int SetSite(Microsoft.VisualStudio.OLE.Interop.IServiceProvider psp) { _serviceProvider = new ServiceProvider(psp); return VSConstants.S_OK; } public int Close() => VSConstants.S_OK; public int CreateEditorInstance( uint grfCreateDoc, string pszMkDocument, string pszPhysicalView, IVsHierarchy pvHier, uint itemid, IntPtr punkDocDataExisting, out IntPtr ppunkDocView, out IntPtr ppunkDocData, out string pbstrEditorCaption, out Guid pguidCmdUI, out int pgrfCDW) { ppunkDocView = IntPtr.Zero; ppunkDocData = IntPtr.Zero; pbstrEditorCaption = string.Empty; pgrfCDW = 0; IVsTextLines textLines = new VsTextBufferClass(); ppunkDocData = Marshal.GetIUnknownForObject(textLines); ppunkDocView = ppunkDocData; pguidCmdUI = Guid.Empty; return VSConstants.S_OK; } }