public static RazorHost CreateHost (string fullPath)
		{
			var transformers = new RazorCodeTransformer[] {
				PreprocessedTemplateCodeTransformers.AddGeneratedTemplateClassAttribute,
				PreprocessedTemplateCodeTransformers.SimplifyHelpers,
				PreprocessedTemplateCodeTransformers.InjectBaseClass,
				PreprocessedTemplateCodeTransformers.MakePartialAndRemoveCtor,
			};
			var host = new RazorHost (fullPath, transformers: transformers) {
				DefaultBaseClass = "",
			};
			foreach (var import in defaultImports) {
				host.NamespaceImports.Add (import);
			}
			host.ParserFactory = (h) => new PreprocessedCSharpRazorCodeParser ();
			return host;
		}
        public static RazorHost Create(string fullPath)
        {
            var transformers = new RazorCodeTransformer[] {
                PreprocessedTemplateCodeTransformers.AddGeneratedTemplateClassAttribute,
                PreprocessedTemplateCodeTransformers.SimplifyHelpers,
                PreprocessedTemplateCodeTransformers.InjectBaseClass,
                PreprocessedTemplateCodeTransformers.MakePartialAndRemoveCtor,
            };
            var host = new RazorHost(fullPath, transformers: transformers)
            {
                DefaultBaseClass  = "",
                EnableLinePragmas = true,
            };

            foreach (var import in defaultImports)
            {
                host.NamespaceImports.Add(import);
            }
            host.ParserFactory = (h) => new PreprocessedCSharpRazorCodeParser();
            return(host);
        }
		public RazorHost(string fullPath, CodeDomProvider codeDomProvider = null,
		                 RazorCodeTransformer[] transformers = null, CodeGeneratorOptions codeGeneratorOptions = null)
			: base(RazorCodeLanguage.GetLanguageByExtension(".cshtml"))
		{
			if (fullPath == null)
			{
				throw new ArgumentNullException("fullPath");
			}
			_transformers = transformers;
			_fullPath = fullPath;
			_codeDomProvider = codeDomProvider ?? new Microsoft.CSharp.CSharpCodeProvider ();
			base.DefaultNamespace = "ASP";
			EnableLinePragmas = true;

			base.GeneratedClassContext = new GeneratedClassContext(
				executeMethodName: GeneratedClassContext.DefaultExecuteMethodName,
				writeMethodName: GeneratedClassContext.DefaultWriteMethodName,
				writeLiteralMethodName: GeneratedClassContext.DefaultWriteLiteralMethodName,
				writeToMethodName: "WriteTo",
				writeLiteralToMethodName: "WriteLiteralTo",
				templateTypeName: typeof(HelperResult).FullName,
				defineSectionMethodName: "DefineSection",
				beginContextMethodName: "BeginContext",
				endContextMethodName: "EndContext"
				)
			{
				ResolveUrlMethodName = "Href"
			};

			_codeGeneratorOptions = codeGeneratorOptions ?? new CodeGeneratorOptions () {
				// HACK: we use true, even though razor uses false, to work around a mono bug where it omits the 
				// line ending after "#line hidden", resulting in the unparseable "#line hiddenpublic"
				BlankLinesBetweenMembers = true,
				BracingStyle = "C",
				// matches Razor built-in settings
				IndentString = String.Empty,
			};
		}