string GetTextWithDirective (MonoDevelop.Ide.Gui.Document document, bool insertDirective) { string tag = Text; if (!tag.Contains ("{0}")) return tag; if (Type.AssemblyName.StartsWith ("System.Web.UI.WebControls", StringComparison.Ordinal)) return string.Format (tag, "asp"); //register the assembly and look up the class //FIXME: only do this on the insert, not the preview - or remove it afterwards RegisterReference (document.Project); var database = document.GetCompilationAsync ().Result; var cls = database.GetTypeByMetadataName (Type.Load ().FullName); if (cls == null) return tag; var ed = document.GetContent<WebFormsEditorExtension> (); if (ed == null) return tag; var assemName = SystemAssemblyService.ParseAssemblyName (Type.AssemblyName); WebFormsPageInfo.RegisterDirective directive; string prefix = ed.ReferenceManager.GetTagPrefixWithNewDirective (cls, assemName.Name, null, out directive); if (prefix == null) return tag; tag = string.Format (tag, prefix); if (directive != null && insertDirective) ed.ReferenceManager.AddRegisterDirective (directive, document.Editor, true); return tag; }