diff --git a/README.md b/README.md
index b19af6d4..46af1364 100644
--- a/README.md
+++ b/README.md
@@ -9,11 +9,11 @@ To change this file edit the source file and then run MarkdownSnippets.
# RazorLight
-Use Razor to build templates from Files / EmbeddedResources / Strings / Database or your custom source outside of ASP.NET MVC. No redundant dependencies and workarounds in pair with excellent performance and **.NET 8.0 and .NET 9.0** support.
+Use Razor to build templates from Files / EmbeddedResources / Strings / Database or your custom source outside of ASP.NET MVC. No redundant dependencies and workarounds in pair with excellent performance and **.NET 8.0, 9.0 and 10.0** support.
-Forked from original by [@toddams](https://github.com/toddams/RazorLight/)
+Forked from original by [@toddams](https://github.com/toddams/RazorLight/).
-My packages are the same names, but prefixed with jcamp. to differentiate them.
+My packages are the same names, but prefixed with `jcamp.` to differentiate them.
The original repo has not been updated in two years and I needed some updates to the package that were provided by various PRs. I've tried to give all credit where due.
@@ -32,18 +32,16 @@ The original repo has not been updated in two years and I needed some updates to
# Quickstart
-Install the nuget package using following command:
+Install the NuGet package using following command:
-```
+```powershell
Install-Package RazorLight -Version 3.0.0
```
The simplest scenario is to create a template from string. Each template must have a `templateKey` that is associated with it, so you can render the same template next time without recompilation.
-
-
-
-
+
+
```cs
var engine = new RazorLightEngineBuilder()
// required to have a default RazorLightProject type,
@@ -58,17 +56,13 @@ ViewModel model = new ViewModel {Name = "John Doe"};
string result = await engine.CompileRenderStringAsync("templateKey", template, model);
```
-
-snippet source | anchor
-
+snippet source | anchor
To render a compiled template:
-
-
-
+
```cs
var cacheResult = engine.Handler.Cache.RetrieveTemplate("templateKey");
if(cacheResult.Success)
@@ -77,9 +71,7 @@ if(cacheResult.Success)
string result = await engine.RenderTemplateAsync(templatePage, model);
}
```
-
-snippet source | anchor
-
+snippet source | anchor
# Template sources
@@ -91,9 +83,7 @@ RazorLight can resolve templates from any source, but there are a built-in provi
When resolving a template from filesystem, templateKey - is a relative path to the root folder, that you pass to RazorLightEngineBuilder.
-
-
-
+
```cs
var engine = new RazorLightEngineBuilder()
.UseFileSystemProject("C:/RootFolder/With/YourTemplates")
@@ -103,9 +93,7 @@ var engine = new RazorLightEngineBuilder()
var model = new {Name = "John Doe"};
string result = await engine.CompileRenderAsync("Subfolder/View.cshtml", model);
```
-
-snippet source | anchor
-
+snippet source | anchor
## EmbeddedResource source
@@ -114,7 +102,7 @@ For embedded resource, the key is the namespace of the project where the templat
The following examples are using this project structure:
-```
+```text
Project/
Model.cs
Program.cs
@@ -127,9 +115,7 @@ Project.Core/
```
-
-
-
+
```cs
var engine = new RazorLightEngineBuilder()
.UseEmbeddedResourcesProject(typeof(SomeService).Assembly)
@@ -139,17 +125,13 @@ var engine = new RazorLightEngineBuilder()
var model = new Model();
string html = await engine.CompileRenderAsync("EmailTemplates.Body", model);
```
-
-snippet source | anchor
-
+snippet source | anchor
Setting the root namespace allows you to leave that piece off when providing the template name as the key:
-
-
-
+
```cs
var engine = new RazorLightEngineBuilder()
.UseEmbeddedResourcesProject(typeof(SomeService).Assembly, "Project.Core.EmailTemplates")
@@ -159,9 +141,7 @@ var engine = new RazorLightEngineBuilder()
var model = new Model();
string html = await engine.CompileRenderAsync("Body", model);
```
-
-snippet source | anchor
-
+snippet source | anchor
## Custom source
@@ -171,9 +151,9 @@ If you store your templates in database - it is recommended to create custom Raz
```CSharp
var project = new EntityFrameworkRazorProject(new AppDbContext());
var engine = new RazorLightEngineBuilder()
- .UseProject(project)
- .UseMemoryCachingProvider()
- .Build();
+ .UseProject(project)
+ .UseMemoryCachingProvider()
+ .Build();
// For key as a GUID
string result = await engine.CompileRenderAsync("6cc277d5-253e-48e0-8a9a-8fe3cae17e5b", new { Name = "John Doe" });
@@ -183,16 +163,17 @@ int templateKey = 322;
string result = await engine.CompileRenderAsync(templateKey.ToString(), new { Name = "John Doe" });
```
-You can find a full sample [here](https://github.com/toddams/RazorLight/tree/master/samples/RazorLight.Samples)
+You can find more at the [RazorLight.Samples](samples/RazorLight.Samples).
# Includes (aka Partial views)
Include feature is useful when you have reusable parts of your templates you want to share between different views. Includes are an effective way of breaking up large templates into smaller components. They can reduce duplication of template content and allow elements to be reused. _This feature requires you to use the RazorLight Project system, otherwise there is no way to locate the partial._
-```CSharp
+```cshtml
@model MyProject.TestViewModel
+
- Hello @Model.Title
+ Hello @Model.Title
@{ await IncludeAsync("SomeView.cshtml", Model); }
@@ -222,7 +203,7 @@ Console.WriteLine(result); // Output: &
In order to disable encoding for the entire document - just set `"DisableEncoding"` variable to true
-```html
+```cshtml
@model TestViewModel @{ DisableEncoding = true; }
@@ -234,12 +215,12 @@ In order to disable encoding for the entire document - just set `"DisableEncodin
Visual Studio tooling knows nothing about RazorLight and assumes, that the view you are using - is a typical ASP.NET MVC template. In order to enable Intellisense for RazorLight templates, you should give Visual Studio a little hint about the base template class, that all your templates inherit implicitly
-```CSharp
+```cshtml
@using RazorLight
@inherits TemplatePage
- Your awesome template goes here, @Model.Name
+ Your awesome template goes here, @Model.Name
```
@@ -258,21 +239,21 @@ The short answer is, you have to set a project to use the memory caching provide
:x:
You used to be able to write:
-```c#
+```CSharp
var razorEngine = new RazorLightEngineBuilder()
-.UseMemoryCachingProvider()
-.Build();
+ .UseMemoryCachingProvider()
+ .Build();
```
... but this now throws an exception, saying, "`_razorLightProject cannot be null`".
:heavy_check_mark:
-```c#
+```CSharp
var razorEngine = new RazorLightEngineBuilder()
- .UseEmbeddedResourcesProject(typeof(AnyTypeInYourSolution)) // exception without this (or another project type)
- .UseMemoryCachingProvider()
- .Build();
+ .UseEmbeddedResourcesProject(typeof(AnyTypeInYourSolution)) // exception without this (or another project type)
+ .UseMemoryCachingProvider()
+ .Build();
```
Affects: RazorLight-2.0.0-beta1 and later.
@@ -296,21 +277,21 @@ Most problems with RazorLight deal with deploying it on a new machine, in a dock
When RazorLight compiles your template - it loads all the assemblies from your entry assembly and creates MetadataReference from it. This is a default strategy and it works in 99% of the time. But sometimes compilation crashes with an exception message like "Can not find assembly My.Super.Assembly2000". In order to solve this problem you can pass additional metadata references to RazorLight.
```CSharp
-var metadataReference = MetadataReference.CreateFromFile("path-to-your-assembly")
+var metadataReference = MetadataReference.CreateFromFile("path-to-your-assembly");
- var engine = new RazorLightEngineBuilder()
- .UseMemoryCachingProvider()
- .AddMetadataReferences(metadataReference)
- .Build();
+var engine = new RazorLightEngineBuilder()
+ .UseMemoryCachingProvider()
+ .AddMetadataReferences(metadataReference)
+ .Build();
```
### I'm getting errors after upgrading to ASP.NET Core 3.0 when using runtime compilation
-Please see: https://docs.microsoft.com/en-us/aspnet/core/razor-pages/sdk?view=aspnetcore-3.1#use-the-razor-sdk
+Please see [the warning in the Microsoft documentation](https://learn.microsoft.com/en-us/aspnet/core/razor-pages/sdk?view=aspnetcore-3.1#properties-1):
-> Starting with ASP.NET Core 3.0, MVC Views or Razor Pages aren't served by default if the `RazorCompileOnBuild` or `RazorCompileOnPublish` MSBuild properties in the project file are disabled. Applications must add an explicit reference to the `Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation` package if the app relies on runtime compilation to process .cshtml files.
+> Starting with ASP.NET Core 3.0, MVC Views or Razor Pages aren't served by default if the `RazorCompileOnBuild` or `RazorCompileOnPublish` MSBuild properties in the project file are disabled. Applications must add an explicit reference to the [Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation](https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation) package if the app relies on runtime compilation to process `.cshtml` files.
-### I'm getting a Null Reference Exception after upgrading to RazorLight-2.0.0-beta2 or later.
+### I'm getting a Null Reference Exception after upgrading to RazorLight-2.0.0-beta2 or later
The most common scenario is that some people were using RazorLight's ability to render raw strings as templates. While this is still somewhat supported (you can't use advanced features like partial views), what is not supported (right now) is using the caching provider with raw strings. A workaround is to use a dummy class.
@@ -319,23 +300,23 @@ The most common scenario is that some people were using RazorLight's ability to
Add these property groups to your **entry point csproj**.
It has to be the entry point project. For example: ASP.NET Core web project, .NET Core Console project, etc.
-```XML
-
-
- true
- false
- false
-
+```xml
+
+
+ true
+ false
+ false
+
```
### I'm getting "Can't load metadata reference from the entry assembly" exception
Set PreserveCompilationContext to true in your \*.csproj file's PropertyGroup tag.
-```XML
+```xml
- ...
- true
+ ...
+ true
```
@@ -346,10 +327,10 @@ Additionally, RazorLight allows you to specifically locate any `MetadataReferenc
By default, the 3.0 SDK avoids copying references to the build output.
Set `PreserveCompilationReferences` and `PreserveCompilationContext` to true in your \*.csproj file's PropertyGroup tag.
-```XML
+```xml
- true
- true
+ true
+ true
```
diff --git a/README.source.md b/README.source.md
index 3c8f303f..27f5c636 100644
--- a/README.source.md
+++ b/README.source.md
@@ -2,11 +2,11 @@
# RazorLight
-Use Razor to build templates from Files / EmbeddedResources / Strings / Database or your custom source outside of ASP.NET MVC. No redundant dependencies and workarounds in pair with excellent performance and **.NET 8.0 and .NET 9.0** support.
+Use Razor to build templates from Files / EmbeddedResources / Strings / Database or your custom source outside of ASP.NET MVC. No redundant dependencies and workarounds in pair with excellent performance and **.NET 8.0, 9.0 and 10.0** support.
-Forked from original by [@toddams](https://github.com/toddams/RazorLight/)
+Forked from original by [@toddams](https://github.com/toddams/RazorLight/).
-My packages are the same names, but prefixed with jcamp. to differentiate them.
+My packages are the same names, but prefixed with `jcamp.` to differentiate them.
The original repo has not been updated in two years and I needed some updates to the package that were provided by various PRs. I've tried to give all credit where due.
@@ -25,15 +25,15 @@ The original repo has not been updated in two years and I needed some updates to
# Quickstart
-Install the nuget package using following command:
+Install the NuGet package using following command:
-```
+```powershell
Install-Package RazorLight -Version 3.0.0
```
The simplest scenario is to create a template from string. Each template must have a `templateKey` that is associated with it, so you can render the same template next time without recompilation.
-snippet: simple
+snippet: Simple
To render a compiled template:
@@ -55,7 +55,7 @@ For embedded resource, the key is the namespace of the project where the templat
The following examples are using this project structure:
-```
+```text
Project/
Model.cs
Program.cs
@@ -80,9 +80,9 @@ If you store your templates in database - it is recommended to create custom Raz
```CSharp
var project = new EntityFrameworkRazorProject(new AppDbContext());
var engine = new RazorLightEngineBuilder()
- .UseProject(project)
- .UseMemoryCachingProvider()
- .Build();
+ .UseProject(project)
+ .UseMemoryCachingProvider()
+ .Build();
// For key as a GUID
string result = await engine.CompileRenderAsync("6cc277d5-253e-48e0-8a9a-8fe3cae17e5b", new { Name = "John Doe" });
@@ -92,16 +92,17 @@ int templateKey = 322;
string result = await engine.CompileRenderAsync(templateKey.ToString(), new { Name = "John Doe" });
```
-You can find a full sample [here](https://github.com/toddams/RazorLight/tree/master/samples/RazorLight.Samples)
+You can find more at the [RazorLight.Samples](samples/RazorLight.Samples).
# Includes (aka Partial views)
Include feature is useful when you have reusable parts of your templates you want to share between different views. Includes are an effective way of breaking up large templates into smaller components. They can reduce duplication of template content and allow elements to be reused. _This feature requires you to use the RazorLight Project system, otherwise there is no way to locate the partial._
-```CSharp
+```cshtml
@model MyProject.TestViewModel
+
- Hello @Model.Title
+ Hello @Model.Title
@{ await IncludeAsync("SomeView.cshtml", Model); }
@@ -131,7 +132,7 @@ Console.WriteLine(result); // Output: &
In order to disable encoding for the entire document - just set `"DisableEncoding"` variable to true
-```html
+```cshtml
@model TestViewModel @{ DisableEncoding = true; }
@@ -143,12 +144,12 @@ In order to disable encoding for the entire document - just set `"DisableEncodin
Visual Studio tooling knows nothing about RazorLight and assumes, that the view you are using - is a typical ASP.NET MVC template. In order to enable Intellisense for RazorLight templates, you should give Visual Studio a little hint about the base template class, that all your templates inherit implicitly
-```CSharp
+```cshtml
@using RazorLight
@inherits TemplatePage
- Your awesome template goes here, @Model.Name
+ Your awesome template goes here, @Model.Name
```
@@ -167,21 +168,21 @@ The short answer is, you have to set a project to use the memory caching provide
:x:
You used to be able to write:
-```c#
+```CSharp
var razorEngine = new RazorLightEngineBuilder()
-.UseMemoryCachingProvider()
-.Build();
+ .UseMemoryCachingProvider()
+ .Build();
```
... but this now throws an exception, saying, "`_razorLightProject cannot be null`".
:heavy_check_mark:
-```c#
+```CSharp
var razorEngine = new RazorLightEngineBuilder()
- .UseEmbeddedResourcesProject(typeof(AnyTypeInYourSolution)) // exception without this (or another project type)
- .UseMemoryCachingProvider()
- .Build();
+ .UseEmbeddedResourcesProject(typeof(AnyTypeInYourSolution)) // exception without this (or another project type)
+ .UseMemoryCachingProvider()
+ .Build();
```
Affects: RazorLight-2.0.0-beta1 and later.
@@ -205,21 +206,21 @@ Most problems with RazorLight deal with deploying it on a new machine, in a dock
When RazorLight compiles your template - it loads all the assemblies from your entry assembly and creates MetadataReference from it. This is a default strategy and it works in 99% of the time. But sometimes compilation crashes with an exception message like "Can not find assembly My.Super.Assembly2000". In order to solve this problem you can pass additional metadata references to RazorLight.
```CSharp
-var metadataReference = MetadataReference.CreateFromFile("path-to-your-assembly")
+var metadataReference = MetadataReference.CreateFromFile("path-to-your-assembly");
- var engine = new RazorLightEngineBuilder()
- .UseMemoryCachingProvider()
- .AddMetadataReferences(metadataReference)
- .Build();
+var engine = new RazorLightEngineBuilder()
+ .UseMemoryCachingProvider()
+ .AddMetadataReferences(metadataReference)
+ .Build();
```
### I'm getting errors after upgrading to ASP.NET Core 3.0 when using runtime compilation
-Please see: https://docs.microsoft.com/en-us/aspnet/core/razor-pages/sdk?view=aspnetcore-3.1#use-the-razor-sdk
+Please see [the warning in the Microsoft documentation](https://learn.microsoft.com/en-us/aspnet/core/razor-pages/sdk?view=aspnetcore-3.1#properties-1):
-> Starting with ASP.NET Core 3.0, MVC Views or Razor Pages aren't served by default if the `RazorCompileOnBuild` or `RazorCompileOnPublish` MSBuild properties in the project file are disabled. Applications must add an explicit reference to the `Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation` package if the app relies on runtime compilation to process .cshtml files.
+> Starting with ASP.NET Core 3.0, MVC Views or Razor Pages aren't served by default if the `RazorCompileOnBuild` or `RazorCompileOnPublish` MSBuild properties in the project file are disabled. Applications must add an explicit reference to the [Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation](https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation) package if the app relies on runtime compilation to process `.cshtml` files.
-### I'm getting a Null Reference Exception after upgrading to RazorLight-2.0.0-beta2 or later.
+### I'm getting a Null Reference Exception after upgrading to RazorLight-2.0.0-beta2 or later
The most common scenario is that some people were using RazorLight's ability to render raw strings as templates. While this is still somewhat supported (you can't use advanced features like partial views), what is not supported (right now) is using the caching provider with raw strings. A workaround is to use a dummy class.
@@ -228,23 +229,23 @@ The most common scenario is that some people were using RazorLight's ability to
Add these property groups to your **entry point csproj**.
It has to be the entry point project. For example: ASP.NET Core web project, .NET Core Console project, etc.
-```XML
-
-
- true
- false
- false
-
+```xml
+
+
+ true
+ false
+ false
+
```
### I'm getting "Can't load metadata reference from the entry assembly" exception
Set PreserveCompilationContext to true in your \*.csproj file's PropertyGroup tag.
-```XML
+```xml
- ...
- true
+ ...
+ true
```
@@ -255,10 +256,10 @@ Additionally, RazorLight allows you to specifically locate any `MetadataReferenc
By default, the 3.0 SDK avoids copying references to the build output.
Set `PreserveCompilationReferences` and `PreserveCompilationContext` to true in your \*.csproj file's PropertyGroup tag.
-```XML
+```xml
- true
- true
+ true
+ true
```
diff --git a/RazorLight.sln b/RazorLight.sln
deleted file mode 100644
index 8968e6ca..00000000
--- a/RazorLight.sln
+++ /dev/null
@@ -1,97 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.2.32616.157
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{25F57564-58FD-4FD2-8CDA-98261E5BEEEC}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{CDB1D407-71F7-44D6-8B35-F0013D1717A6}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RazorLight", "src\RazorLight\RazorLight.csproj", "{CA780663-2714-43B0-89BC-BEB26BC5405A}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sandbox", "sandbox", "{D8281EA5-1C64-4C9F-9537-967D685C1918}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RazorLight.Sandbox", "sandbox\RazorLight.Sandbox\RazorLight.Sandbox.csproj", "{DC81E072-5571-4E4A-A7EC-4122BF4A012E}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RazorLight.Tests", "tests\RazorLight.Tests\RazorLight.Tests.csproj", "{63EE1F3F-C71E-48DA-8135-9E602D6B7206}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{61D04B29-43F8-4FE3-A12E-BB16743BFB65}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.EntityFrameworkProject", "samples\RazorLight.Samples\Samples.EntityFrameworkProject.csproj", "{C9B26DF6-F8E6-481A-B497-C8999641A99D}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RazorLight.Precompile", "src\RazorLight.Precompile\RazorLight.Precompile.csproj", "{AD9A02F6-8078-4DFF-AFA6-4DE8674D5C76}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "External", "External", "{634B4E56-928A-4132-AB3F-F2DD43756350}"
- ProjectSection(SolutionItems) = preProject
- .editorconfig = .editorconfig
- LICENSE = LICENSE
- README.md = README.md
- README.source.md = README.source.md
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{DF8F9896-63C0-43AC-8834-1D13AA095928}"
- ProjectSection(SolutionItems) = preProject
- Directory.Build.props = Directory.Build.props
- .github\workflows\dotnet-test.yml = .github\workflows\dotnet-test.yml
- .github\workflows\publish-nuget.yml = .github\workflows\publish-nuget.yml
- .github\workflows\release-please.yml = .github\workflows\release-please.yml
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Publish", "Publish", "{03C519A7-C5B1-4421-893B-D2995D4A92BC}"
- ProjectSection(SolutionItems) = preProject
- makeNuget.cmd = makeNuget.cmd
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{EC25D85F-CCCC-43E1-AACD-2D710C1B760B}"
- ProjectSection(SolutionItems) = preProject
- .editorconfig = .editorconfig
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RazorLight.Precompile.Tests", "tests\RazorLight.Precompile.Tests\RazorLight.Precompile.Tests.csproj", "{C9BA26CD-C20E-493C-A55A-C5498778184B}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {CA780663-2714-43B0-89BC-BEB26BC5405A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CA780663-2714-43B0-89BC-BEB26BC5405A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CA780663-2714-43B0-89BC-BEB26BC5405A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {CA780663-2714-43B0-89BC-BEB26BC5405A}.Release|Any CPU.Build.0 = Release|Any CPU
- {DC81E072-5571-4E4A-A7EC-4122BF4A012E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {DC81E072-5571-4E4A-A7EC-4122BF4A012E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {DC81E072-5571-4E4A-A7EC-4122BF4A012E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {DC81E072-5571-4E4A-A7EC-4122BF4A012E}.Release|Any CPU.Build.0 = Release|Any CPU
- {63EE1F3F-C71E-48DA-8135-9E602D6B7206}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {63EE1F3F-C71E-48DA-8135-9E602D6B7206}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {63EE1F3F-C71E-48DA-8135-9E602D6B7206}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {63EE1F3F-C71E-48DA-8135-9E602D6B7206}.Release|Any CPU.Build.0 = Release|Any CPU
- {C9B26DF6-F8E6-481A-B497-C8999641A99D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C9B26DF6-F8E6-481A-B497-C8999641A99D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C9B26DF6-F8E6-481A-B497-C8999641A99D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C9B26DF6-F8E6-481A-B497-C8999641A99D}.Release|Any CPU.Build.0 = Release|Any CPU
- {AD9A02F6-8078-4DFF-AFA6-4DE8674D5C76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {AD9A02F6-8078-4DFF-AFA6-4DE8674D5C76}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {AD9A02F6-8078-4DFF-AFA6-4DE8674D5C76}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {AD9A02F6-8078-4DFF-AFA6-4DE8674D5C76}.Release|Any CPU.Build.0 = Release|Any CPU
- {C9BA26CD-C20E-493C-A55A-C5498778184B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C9BA26CD-C20E-493C-A55A-C5498778184B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C9BA26CD-C20E-493C-A55A-C5498778184B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C9BA26CD-C20E-493C-A55A-C5498778184B}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {CA780663-2714-43B0-89BC-BEB26BC5405A} = {25F57564-58FD-4FD2-8CDA-98261E5BEEEC}
- {DC81E072-5571-4E4A-A7EC-4122BF4A012E} = {D8281EA5-1C64-4C9F-9537-967D685C1918}
- {63EE1F3F-C71E-48DA-8135-9E602D6B7206} = {CDB1D407-71F7-44D6-8B35-F0013D1717A6}
- {C9B26DF6-F8E6-481A-B497-C8999641A99D} = {61D04B29-43F8-4FE3-A12E-BB16743BFB65}
- {AD9A02F6-8078-4DFF-AFA6-4DE8674D5C76} = {25F57564-58FD-4FD2-8CDA-98261E5BEEEC}
- {C9BA26CD-C20E-493C-A55A-C5498778184B} = {CDB1D407-71F7-44D6-8B35-F0013D1717A6}
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {590C5541-E5A7-41ED-AFC7-D4A52E594191}
- EndGlobalSection
-EndGlobal
diff --git a/RazorLight.slnx b/RazorLight.slnx
new file mode 100644
index 00000000..3208197e
--- /dev/null
+++ b/RazorLight.slnx
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/FunctionApp-WebMvc-Sample/FunctionApp-WebMvc-Sample/FunctionApp-WebMvc-Sample.csproj b/samples/FunctionApp-WebMvc-Sample/FunctionApp-WebMvc-Sample/FunctionApp-WebMvc-Sample.csproj
index 74b69d75..655a6002 100644
--- a/samples/FunctionApp-WebMvc-Sample/FunctionApp-WebMvc-Sample/FunctionApp-WebMvc-Sample.csproj
+++ b/samples/FunctionApp-WebMvc-Sample/FunctionApp-WebMvc-Sample/FunctionApp-WebMvc-Sample.csproj
@@ -13,10 +13,10 @@