static void GenerateInternal (IProgressMonitor monitor, ProjectFile file, SingleFileCustomToolResult result)
		{
			if (file.Project.SupportedLanguages.All (l => l != "C#")) {
				const string msg = "Razor templates are only supported in C# projects";
				result.Errors.Add (new CompilerError (file.Name, -1, -1, null, msg));
				monitor.Log.WriteLine (msg);
				return;
			}

			var host = new PreprocessedRazorHost (file.FilePath);

			var defaultOutputName = file.FilePath.ChangeExtension (".cs");

			var ns = CustomToolService.GetFileNamespace (file, defaultOutputName);
			host.DefaultNamespace = ns;

			CompilerErrorCollection errors;
			var code = host.GenerateCode (out errors);
			result.Errors.AddRange (errors);

			var writer = new MonoDevelop.DesignerSupport.CodeBehindWriter ();
			writer.WriteFile (defaultOutputName, code);
			writer.WriteOpenFiles ();

			result.GeneratedFilePath = defaultOutputName;

			foreach (var err in result.Errors) {
				monitor.Log.WriteLine (err);
			}
		}
示例#2
0
        static void GenerateInternal(IProgressMonitor monitor, ProjectFile file, SingleFileCustomToolResult result)
        {
            if (file.Project.SupportedLanguages.All(l => l != "C#"))
            {
                const string msg = "Razor templates are only supported in C# projects";
                result.Errors.Add(new CompilerError(file.Name, -1, -1, null, msg));
                monitor.Log.WriteLine(msg);
                return;
            }

            var host = new PreprocessedRazorHost(file.FilePath);

            var defaultOutputName = file.FilePath.ChangeExtension(".cs");

            var ns = CustomToolService.GetFileNamespace(file, defaultOutputName);

            host.DefaultNamespace = ns;

            CompilerErrorCollection errors;
            var code = host.GenerateCode(out errors);

            result.Errors.AddRange(errors);

            var writer = new MonoDevelop.DesignerSupport.CodeBehindWriter();

            writer.WriteFile(defaultOutputName, code);
            writer.WriteOpenFiles();

            result.GeneratedFilePath = defaultOutputName;

            foreach (var err in result.Errors)
            {
                monitor.Log.WriteLine(err);
            }
        }