Moving MvcRazorHost to a separate assembly
This commit is contained in:
parent
cb8a32e5a6
commit
a6393e77ab
20
WebFx.sln
20
WebFx.sln
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 2013
|
# Visual Studio 2013
|
||||||
VisualStudioVersion = 12.0.21005.1
|
VisualStudioVersion = 12.0.30110.0
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{DAAE4C74-D06F-4874-A166-33305D2643CE}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{DAAE4C74-D06F-4874-A166-33305D2643CE}"
|
||||||
EndProject
|
EndProject
|
||||||
|
|
@ -23,6 +23,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MvcSample.net45", "samples\
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MvcSample.k10", "samples\MvcSample\MvcSample.k10.csproj", "{A7D7CD66-A407-4144-8AB7-07F895F87137}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MvcSample.k10", "samples\MvcSample\MvcSample.k10.csproj", "{A7D7CD66-A407-4144-8AB7-07F895F87137}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc.Razor.Host.net45", "src\Microsoft.AspNet.Mvc.Razor.Host\Microsoft.AspNet.Mvc.Razor.Host.net45.csproj", "{A25566C9-97C7-4770-BBC1-9B815D3B1380}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc.Razor.Host.k10", "src\Microsoft.AspNet.Mvc.Razor.Host\Microsoft.AspNet.Mvc.Razor.Host.k10.csproj", "{613579ED-7B96-4F5C-8DBF-D2C580257BE2}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
|
@ -61,18 +65,28 @@ Global
|
||||||
{A7D7CD66-A407-4144-8AB7-07F895F87137}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{A7D7CD66-A407-4144-8AB7-07F895F87137}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{A7D7CD66-A407-4144-8AB7-07F895F87137}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{A7D7CD66-A407-4144-8AB7-07F895F87137}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{A7D7CD66-A407-4144-8AB7-07F895F87137}.Release|Any CPU.Build.0 = Release|Any CPU
|
{A7D7CD66-A407-4144-8AB7-07F895F87137}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{A25566C9-97C7-4770-BBC1-9B815D3B1380}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{A25566C9-97C7-4770-BBC1-9B815D3B1380}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{A25566C9-97C7-4770-BBC1-9B815D3B1380}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{A25566C9-97C7-4770-BBC1-9B815D3B1380}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{613579ED-7B96-4F5C-8DBF-D2C580257BE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{613579ED-7B96-4F5C-8DBF-D2C580257BE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{613579ED-7B96-4F5C-8DBF-D2C580257BE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{613579ED-7B96-4F5C-8DBF-D2C580257BE2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(NestedProjects) = preSolution
|
GlobalSection(NestedProjects) = preSolution
|
||||||
|
{501817DD-8143-4A50-888D-99896A82CD12} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
|
||||||
|
{A7D7CD66-A407-4144-8AB7-07F895F87137} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
|
||||||
{64BD92BA-F313-496C-ACE6-B9C4C10C420E} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
|
{64BD92BA-F313-496C-ACE6-B9C4C10C420E} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
|
||||||
{BA88E212-5889-48DC-823F-A3A67DDEF123} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
|
{BA88E212-5889-48DC-823F-A3A67DDEF123} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
|
||||||
{28AA31B2-6504-432D-8599-1501FE0B100A} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
|
{28AA31B2-6504-432D-8599-1501FE0B100A} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
|
||||||
{24947215-86AB-4DD0-B94E-88B1EC4DC877} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
|
{24947215-86AB-4DD0-B94E-88B1EC4DC877} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
|
||||||
{365CA5C6-037D-4E6E-AF05-F5FA42E024EB} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
|
{365CA5C6-037D-4E6E-AF05-F5FA42E024EB} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
|
||||||
{0D2C8C3D-AFC3-4E1F-A6D8-9F690EE5E063} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
|
{0D2C8C3D-AFC3-4E1F-A6D8-9F690EE5E063} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
|
||||||
{501817DD-8143-4A50-888D-99896A82CD12} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
|
{A25566C9-97C7-4770-BBC1-9B815D3B1380} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
|
||||||
{A7D7CD66-A407-4144-8AB7-07F895F87137} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
|
{613579ED-7B96-4F5C-8DBF-D2C580257BE2} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
|
||||||
|
|
@ -22,9 +22,11 @@ namespace MvcSample
|
||||||
|
|
||||||
string appRoot = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
|
string appRoot = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
|
||||||
|
|
||||||
var fileSystem = new PhysicalFileSystem(appRoot);
|
serviceProvider.AddInstance<IFileSystem>(new PhysicalFileSystem(appRoot));
|
||||||
serviceProvider.AddInstance<IFileSystem>(new VirtualFileSystem(fileSystem));
|
serviceProvider.Add<IVirtualFileSystem, VirtualFileSystem>();
|
||||||
serviceProvider.AddInstance<ICompilationService>(new RazorCompilationService(new CscBasedCompilationService()));
|
serviceProvider.Add<IMvcRazorHost, MvcRazorHost>();
|
||||||
|
serviceProvider.Add<ICompilationService, CscBasedCompilationService>();
|
||||||
|
serviceProvider.Add<IRazorCompilationService, RazorCompilationService>();
|
||||||
serviceProvider.Add<IVirtualPathViewFactory, VirtualPathViewFactory>();
|
serviceProvider.Add<IVirtualPathViewFactory, VirtualPathViewFactory>();
|
||||||
serviceProvider.Add<IViewEngine, RazorViewEngine>();
|
serviceProvider.Add<IViewEngine, RazorViewEngine>();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,10 @@
|
||||||
"Microsoft.AspNet.FileSystems": "0.1-alpha-*",
|
"Microsoft.AspNet.FileSystems": "0.1-alpha-*",
|
||||||
"Microsoft.AspNet.Abstractions": "0.1-alpha-*",
|
"Microsoft.AspNet.Abstractions": "0.1-alpha-*",
|
||||||
"Microsoft.AspNet.DependencyInjection" : "0.1-alpha-*",
|
"Microsoft.AspNet.DependencyInjection" : "0.1-alpha-*",
|
||||||
|
"Microsoft.AspNet.Razor" : "0.1-alpha-*",
|
||||||
"Microsoft.AspNet.Mvc" : "",
|
"Microsoft.AspNet.Mvc" : "",
|
||||||
"Microsoft.AspNet.Mvc.Razor" : ""
|
"Microsoft.AspNet.Mvc.Razor" : "",
|
||||||
|
"Microsoft.AspNet.Mvc.Razor.Host" : ""
|
||||||
},
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"net45": {
|
"net45": {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
using System.IO;
|
||||||
|
using Microsoft.AspNet.Razor;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNet.Mvc.Razor
|
||||||
|
{
|
||||||
|
public interface IMvcRazorHost
|
||||||
|
{
|
||||||
|
GeneratorResults GenerateCode(string rootRelativePath, Stream inputStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,87 @@
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
using Microsoft.AspNet.Razor;
|
||||||
|
using Microsoft.AspNet.Razor.Generator;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNet.Mvc.Razor
|
||||||
|
{
|
||||||
|
public class MvcRazorHost : RazorEngineHost, IMvcRazorHost
|
||||||
|
{
|
||||||
|
private static readonly string[] _defaultNamespaces = new[]
|
||||||
|
{
|
||||||
|
"System",
|
||||||
|
"System.Linq",
|
||||||
|
"System.Collections.Generic",
|
||||||
|
"Microsoft.AspNet.Mvc",
|
||||||
|
"Microsoft.AspNet.Mvc.Razor"
|
||||||
|
};
|
||||||
|
|
||||||
|
public MvcRazorHost(Type baseType)
|
||||||
|
: this(baseType.FullName)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public MvcRazorHost(string baseType)
|
||||||
|
: base(new CSharpRazorCodeLanguage())
|
||||||
|
{
|
||||||
|
DefaultBaseClass = baseType;
|
||||||
|
GeneratedClassContext = new GeneratedClassContext(
|
||||||
|
executeMethodName: "Execute",
|
||||||
|
writeMethodName: "Write",
|
||||||
|
writeLiteralMethodName: "WriteLiteral",
|
||||||
|
writeToMethodName: "WriteTo",
|
||||||
|
writeLiteralToMethodName: "WriteLiteralTo",
|
||||||
|
templateTypeName: "Template",
|
||||||
|
defineSectionMethodName: "DefineSection")
|
||||||
|
{
|
||||||
|
ResolveUrlMethodName = "Href"
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var ns in _defaultNamespaces)
|
||||||
|
{
|
||||||
|
NamespaceImports.Add(ns);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public GeneratorResults GenerateCode(string rootRelativePath, Stream inputStream)
|
||||||
|
{
|
||||||
|
string className = Path.GetFileNameWithoutExtension(rootRelativePath);
|
||||||
|
if (rootRelativePath.StartsWith("~/", StringComparison.Ordinal))
|
||||||
|
{
|
||||||
|
rootRelativePath = rootRelativePath.Substring(2);
|
||||||
|
}
|
||||||
|
string classNamespace = GenerateNamespace(rootRelativePath);
|
||||||
|
|
||||||
|
using (var reader = new StreamReader(inputStream))
|
||||||
|
{
|
||||||
|
var engine = new RazorTemplateEngine(this);
|
||||||
|
return engine.GenerateCode(reader, className, classNamespace, rootRelativePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GenerateNamespace(string rootRelativePath)
|
||||||
|
{
|
||||||
|
var namespaceBuilder = new StringBuilder(rootRelativePath.Length);
|
||||||
|
rootRelativePath = Path.GetDirectoryName(rootRelativePath);
|
||||||
|
for (int i = 0; i < rootRelativePath.Length; i++)
|
||||||
|
{
|
||||||
|
char c = rootRelativePath[i];
|
||||||
|
if (c == Path.DirectorySeparatorChar)
|
||||||
|
{
|
||||||
|
namespaceBuilder.Append('.');
|
||||||
|
}
|
||||||
|
else if (!Char.IsLetterOrDigit(c))
|
||||||
|
{
|
||||||
|
namespaceBuilder.Append('_');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
namespaceBuilder.Append(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return namespaceBuilder.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"version" : "0.1-alpha-*",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNet.Razor": "0.1-alpha-*"
|
||||||
|
},
|
||||||
|
"configurations": {
|
||||||
|
"net45": {},
|
||||||
|
"k10" : {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,40 +0,0 @@
|
||||||
using Microsoft.AspNet.Razor;
|
|
||||||
using Microsoft.AspNet.Razor.Generator;
|
|
||||||
using Microsoft.AspNet.Razor.Parser;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Mvc.Razor
|
|
||||||
{
|
|
||||||
public class MvcRazorHost : RazorEngineHost
|
|
||||||
{
|
|
||||||
private static readonly string[] _namespaces = new[]
|
|
||||||
{
|
|
||||||
"System",
|
|
||||||
"System.Linq",
|
|
||||||
"System.Collections.Generic",
|
|
||||||
"Microsoft.AspNet.Mvc",
|
|
||||||
"Microsoft.AspNet.Mvc.Razor"
|
|
||||||
};
|
|
||||||
|
|
||||||
public MvcRazorHost()
|
|
||||||
: base(new CSharpRazorCodeLanguage())
|
|
||||||
{
|
|
||||||
DefaultBaseClass = typeof(RazorView).FullName;
|
|
||||||
GeneratedClassContext = new GeneratedClassContext(
|
|
||||||
executeMethodName: "Execute",
|
|
||||||
writeMethodName: "Write",
|
|
||||||
writeLiteralMethodName: "WriteLiteral",
|
|
||||||
writeToMethodName: "WriteTo",
|
|
||||||
writeLiteralToMethodName: "WriteLiteralTo",
|
|
||||||
templateTypeName: "Template",
|
|
||||||
defineSectionMethodName: "DefineSection")
|
|
||||||
{
|
|
||||||
ResolveUrlMethodName = "Href"
|
|
||||||
};
|
|
||||||
|
|
||||||
foreach (var ns in _namespaces)
|
|
||||||
{
|
|
||||||
NamespaceImports.Add(ns);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -12,10 +12,12 @@ namespace Microsoft.AspNet.Mvc.Razor
|
||||||
{
|
{
|
||||||
private static readonly CompilerCache _cache = new CompilerCache();
|
private static readonly CompilerCache _cache = new CompilerCache();
|
||||||
private readonly ICompilationService _baseCompilationService;
|
private readonly ICompilationService _baseCompilationService;
|
||||||
|
private readonly IMvcRazorHost _razorHost;
|
||||||
|
|
||||||
public RazorCompilationService(ICompilationService compilationService)
|
public RazorCompilationService(ICompilationService compilationService, IMvcRazorHost razorHost)
|
||||||
{
|
{
|
||||||
_baseCompilationService = compilationService;
|
_baseCompilationService = compilationService;
|
||||||
|
_razorHost = razorHost;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<CompilationResult> Compile(IFileInfo file)
|
public Task<CompilationResult> Compile(IFileInfo file)
|
||||||
|
|
@ -25,15 +27,10 @@ namespace Microsoft.AspNet.Mvc.Razor
|
||||||
|
|
||||||
private async Task<CompilationResult> CompileCore(IFileInfo file)
|
private async Task<CompilationResult> CompileCore(IFileInfo file)
|
||||||
{
|
{
|
||||||
var host = new MvcRazorHost();
|
|
||||||
var engine = new RazorTemplateEngine(host);
|
|
||||||
|
|
||||||
var namespaceBuilder = GenerateNamespace(file);
|
|
||||||
|
|
||||||
GeneratorResults results;
|
GeneratorResults results;
|
||||||
using (TextReader rdr = new StreamReader(file.CreateReadStream()))
|
using (Stream inputStream = file.CreateReadStream())
|
||||||
{
|
{
|
||||||
results = engine.GenerateCode(rdr, '_' + file.Name, namespaceBuilder.ToString(), file.PhysicalPath ?? file.Name);
|
results = _razorHost.GenerateCode(file.PhysicalPath, inputStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!results.Success)
|
if (!results.Success)
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,11 @@
|
||||||
"Microsoft.AspNet.DependencyInjection": "0.1-alpha-*",
|
"Microsoft.AspNet.DependencyInjection": "0.1-alpha-*",
|
||||||
"Microsoft.AspNet.Razor": "0.1-alpha-*",
|
"Microsoft.AspNet.Razor": "0.1-alpha-*",
|
||||||
"Microsoft.AspNet.Mvc" : "",
|
"Microsoft.AspNet.Mvc" : "",
|
||||||
"Microsoft.AspNet.Mvc.Forms" : ""
|
"Microsoft.AspNet.Mvc.Forms" : "",
|
||||||
|
"Microsoft.AspNet.Mvc.Razor.Host" : ""
|
||||||
},
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"net45": {},
|
"net45": {},
|
||||||
"k10" : { }
|
"k10" : {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue