├── src
├── Modules
│ ├── OrchardCoreBlazorSample.Module1.Blazor
│ │ ├── _Imports.razor
│ │ ├── Parameterized.razor
│ │ ├── Message.razor
│ │ └── OrchardCoreBlazorSample.Module1.Blazor.csproj
│ ├── OrchardCoreBlazorSample.Module1
│ │ ├── Views
│ │ │ ├── MessageComponent.cshtml
│ │ │ ├── _ViewImports.cshtml
│ │ │ ├── ParameterizedComponent.cshtml
│ │ │ └── Test
│ │ │ │ └── Index.cshtml
│ │ ├── Manifest.cs
│ │ ├── Controllers
│ │ │ └── TestController.cs
│ │ ├── OrchardCoreBlazorSample.Module1.csproj
│ │ └── BlazorStartup.cs
│ └── OrchardCoreBlazorSample.Module2
│ │ ├── Views
│ │ ├── _ViewImports.cshtml
│ │ └── Test
│ │ │ └── Index.cshtml
│ │ ├── Manifest.cs
│ │ ├── Controllers
│ │ └── TestController.cs
│ │ └── OrchardCoreBlazorSample.Module2.csproj
├── OrchardCoreBlazorSample.Web
│ ├── wwwroot
│ │ └── .placeholder
│ ├── appsettings.Development.json
│ ├── appsettings.json
│ ├── OrchardCoreBlazorSample.Web.csproj
│ ├── Properties
│ │ └── launchSettings.json
│ ├── Program.cs
│ └── Startup.cs
└── Themes
│ └── OrchardCoreBlazorSample.Theme
│ ├── Recipes
│ └── blazor.sample.recipe.json
│ ├── Views
│ ├── _ViewImports.cshtml
│ └── Layout.cshtml
│ ├── Manifest.cs
│ └── OrchardCoreBlazorSample.Theme.csproj
├── NuGet.config
├── Readme.md
├── .gitignore
└── OrchardCoreBlazorSample.sln
/src/Modules/OrchardCoreBlazorSample.Module1.Blazor/_Imports.razor:
--------------------------------------------------------------------------------
1 | @using Microsoft.AspNetCore.Components.Web
2 |
--------------------------------------------------------------------------------
/src/OrchardCoreBlazorSample.Web/wwwroot/.placeholder:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/barthamark/Orchard-Core-Blazor-Sample/HEAD/src/OrchardCoreBlazorSample.Web/wwwroot/.placeholder
--------------------------------------------------------------------------------
/src/Themes/OrchardCoreBlazorSample.Theme/Recipes/blazor.sample.recipe.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/barthamark/Orchard-Core-Blazor-Sample/HEAD/src/Themes/OrchardCoreBlazorSample.Theme/Recipes/blazor.sample.recipe.json
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module1.Blazor/Parameterized.razor:
--------------------------------------------------------------------------------
1 |
Parameterized Component
2 |
3 | Hello @FullName
4 |
5 |
6 | @code {
7 | [Parameter]
8 | public string FullName { get; set; }
9 | }
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module1.Blazor/Message.razor:
--------------------------------------------------------------------------------
1 | Message Component
2 |
3 |
4 |
5 | message: @message
6 |
7 |
8 | @code {
9 | string message;
10 | }
11 |
--------------------------------------------------------------------------------
/NuGet.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module1/Views/MessageComponent.cshtml:
--------------------------------------------------------------------------------
1 | @* This is the component rendering for Message Blazor component. *@
2 |
3 | @(await Html.RenderComponentAsync(RenderMode.ServerPrerendered))
--------------------------------------------------------------------------------
/src/OrchardCoreBlazorSample.Web/appsettings.Development.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "LogLevel": {
4 | "Default": "Information",
5 | "Microsoft": "Warning",
6 | "Microsoft.Hosting.Lifetime": "Information"
7 | }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/OrchardCoreBlazorSample.Web/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "LogLevel": {
4 | "Default": "Information",
5 | "Microsoft": "Warning",
6 | "Microsoft.Hosting.Lifetime": "Information"
7 | }
8 | },
9 | "AllowedHosts": "*"
10 | }
11 |
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module1/Views/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @inherits OrchardCore.DisplayManagement.Razor.RazorPage
2 |
3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
4 | @addTagHelper *, OrchardCore.DisplayManagement
5 | @addTagHelper *, OrchardCore.ResourceManagement
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module2/Views/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @inherits OrchardCore.DisplayManagement.Razor.RazorPage
2 |
3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
4 | @addTagHelper *, OrchardCore.DisplayManagement
5 | @addTagHelper *, OrchardCore.ResourceManagement
--------------------------------------------------------------------------------
/src/Themes/OrchardCoreBlazorSample.Theme/Views/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @inherits OrchardCore.DisplayManagement.Razor.RazorPage
2 |
3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
4 | @addTagHelper *, OrchardCore.DisplayManagement
5 | @addTagHelper *, OrchardCore.ResourceManagement
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module1/Manifest.cs:
--------------------------------------------------------------------------------
1 | using OrchardCore.Modules.Manifest;
2 |
3 | [assembly: Module(
4 | Name = "Orchard Core Blazor Sample - Module 1",
5 | Author = "Márk Bartha",
6 | Website = "http://markbartha.com",
7 | Version = "1.0",
8 | Description = "Sample module 1.",
9 | Category = "Samples"
10 | )]
11 |
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module2/Manifest.cs:
--------------------------------------------------------------------------------
1 | using OrchardCore.Modules.Manifest;
2 |
3 | [assembly: Module(
4 | Name = "Orchard Core Blazor Sample - Module 2",
5 | Author = "Márk Bartha",
6 | Website = "http://markbartha.com",
7 | Version = "1.0",
8 | Description = "Sample module 2.",
9 | Category = "Samples"
10 | )]
11 |
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module2/Views/Test/Index.cshtml:
--------------------------------------------------------------------------------
1 | @T["Hello from Module 2!"]
2 |
3 | @* It renders an Orchard Core shape and passes a parameter to it. The shape will initialize the Blazor component and use this parameter.
4 | See ParameterizedComponent.cshtml in Module1. *@
5 |
6 |
--------------------------------------------------------------------------------
/src/Themes/OrchardCoreBlazorSample.Theme/Manifest.cs:
--------------------------------------------------------------------------------
1 | using OrchardCore.DisplayManagement.Manifest;
2 |
3 | [assembly: Theme(
4 | Name = "Orchard Core Blazor Sample - Theme",
5 | Author = "Márk Bartha",
6 | Website = "http://markbartha.com",
7 | Version = "1.0",
8 | Description = "Theme for Orchard Core Blazor Sample project.",
9 | Category = "Samples",
10 | BaseTheme = "TheTheme"
11 | )]
12 |
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module1/Views/ParameterizedComponent.cshtml:
--------------------------------------------------------------------------------
1 | @* This is a parameterized component rendering. The parameters are coming from Orchard Core shape rendering.
2 | See OrchardCoreBlazorSample.Module2/Views/Test/Index.cshtml to see how it's initialized. *@
3 |
4 | @(await Html.RenderComponentAsync(RenderMode.ServerPrerendered, new { FullName = Model.FullName }))
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module1/Views/Test/Index.cshtml:
--------------------------------------------------------------------------------
1 | @T["Hello from Module 1!"]
2 |
3 | @* This is an Orchard Core shape tag helper. It wraps the actual Blazor component rendering. It is not neccessary but it
4 | demonstrates that you can reuse a component rendering (or parameterization, for this please see Module2) using shapes.
5 | See MessageComponent.cshtml or ParameterizedComponent.cshtml.*@
6 |
7 |
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module1/Controllers/TestController.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Mvc;
2 |
3 | namespace OrchardCoreBlazorSample.Module1.Controllers
4 | {
5 | // Sample controller for displaying a Blazor component implemented in OrchardCoreBlazorSample.Module1.Blazor project.
6 | public class TestController : Controller
7 | {
8 | [Route("test/module1")]
9 | public ActionResult Index()
10 | {
11 | return View();
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module2/Controllers/TestController.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Mvc;
2 |
3 | namespace OrchardCoreBlazorSample.Module2.Controllers
4 | {
5 | // Sample controller for displaying a parameterized Blazor component implemented in OrchardCoreBlazorSample.Module1.Blazor project.
6 | public class TestController : Controller
7 | {
8 | [Route("test/module2")]
9 | public ActionResult Index()
10 | {
11 | return View();
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module1.Blazor/OrchardCoreBlazorSample.Module1.Blazor.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | 3.0
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/OrchardCoreBlazorSample.Web/OrchardCoreBlazorSample.Web.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp3.1
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/Themes/OrchardCoreBlazorSample.Theme/OrchardCoreBlazorSample.Theme.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp3.1
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/OrchardCoreBlazorSample.Web/Properties/launchSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "iisSettings": {
3 | "windowsAuthentication": false,
4 | "anonymousAuthentication": true,
5 | "iisExpress": {
6 | "applicationUrl": "http://localhost:59475",
7 | "sslPort": 44333
8 | }
9 | },
10 | "profiles": {
11 | "IIS Express": {
12 | "commandName": "IISExpress",
13 | "launchBrowser": true,
14 | "environmentVariables": {
15 | "ASPNETCORE_ENVIRONMENT": "Development"
16 | }
17 | },
18 | "OrchardCoreBlazorSample.Web": {
19 | "commandName": "Project",
20 | "launchBrowser": true,
21 | "applicationUrl": "https://localhost:5001;http://localhost:5000",
22 | "environmentVariables": {
23 | "ASPNETCORE_ENVIRONMENT": "Development"
24 | }
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/OrchardCoreBlazorSample.Web/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using Microsoft.AspNetCore.Hosting;
6 | using Microsoft.Extensions.Configuration;
7 | using Microsoft.Extensions.Hosting;
8 | using Microsoft.Extensions.Logging;
9 |
10 | namespace OrchardCoreBlazorSample.Web
11 | {
12 | public class Program
13 | {
14 | public static void Main(string[] args)
15 | {
16 | CreateHostBuilder(args).Build().Run();
17 | }
18 |
19 | public static IHostBuilder CreateHostBuilder(string[] args) =>
20 | Host.CreateDefaultBuilder(args)
21 | .ConfigureWebHostDefaults(webBuilder =>
22 | {
23 | webBuilder.UseStartup();
24 | });
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module2/OrchardCoreBlazorSample.Module2.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp3.1
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module1/OrchardCoreBlazorSample.Module1.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp3.1
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/Modules/OrchardCoreBlazorSample.Module1/BlazorStartup.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Builder;
2 | using Microsoft.AspNetCore.Routing;
3 | using Microsoft.Extensions.DependencyInjection;
4 | using OrchardCore.Modules;
5 | using System;
6 |
7 | namespace OrchardCoreBlazorSample.Module1
8 | {
9 | // This is an Orchard Core Startup class. This one is specifically created to initialize Blazor services and the SignalR hub.
10 | // Note, that it should run only once so you might want to create a Blazor base module where you put this Startup class and
11 | // use that module as a dependency for all your Blazor-specific modules.
12 | public class BlazorStartup : StartupBase
13 | {
14 | public override void ConfigureServices(IServiceCollection services)
15 | {
16 | services.AddServerSideBlazor();
17 | }
18 |
19 | public override void Configure(IApplicationBuilder app, IEndpointRouteBuilder routes, IServiceProvider serviceProvider)
20 | {
21 | routes.MapBlazorHub();
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Readme.md:
--------------------------------------------------------------------------------
1 | # Orchard Core Blazor Sample
2 |
3 | This is a sample **Orchard Core CMS** project to demonstrate Orchard Core modules using **server-side** Blazor components. The idea is to be able to build a modularized CMS website using server-side Blazor. If you are planning to build a decoupled CMS websites or a Blazor-only SPA then another approach might be required.
4 |
5 | Please note, that implementing a workaround was required to make Blazor static contents (e.g. blazor.server.js) accessible. See: https://github.com/OrchardCMS/OrchardCore/issues/2966#issuecomment-555506779
6 |
7 | ## How to use this sample
8 |
9 | 1. Clone the repository, restore and build. Please note that the solution uses the latest Orchard Core dev build which means that the referenced NuGet packages won't be available after some time. To solve this issue please update the Orchard Core package versions to the latest (which also means that something might broke). After the next major version is released this project should be upgraded as well to use a stable version.
10 | 2. Set up the Orchard Core website using the `Blazor Sample` recipe. You can use any recipe but make sure to enable the `OrchardCoreBlazorSample.Theme` theme and the `OrchardCoreBlazorSample.Module1` and `OrchardCoreBlazorSample.Module2` modules.
11 | 3. You can test Blazor components under the `/test/module1` and `/test/module2` URLs.
12 | 4. Explanations are in the comments. Please make sure you go through the source code, more specifically go to:
13 | * `OrchardCoreBlazorSample.Web/Startup.cs`
14 | * `OrchardCoreBlazorSample.Module1/Startup.cs`
15 | * `OrchardCoreBlazorSample.Module2/Views` (see all files)
16 | * `OrchardCoreBlazorSample.Module2/Views` (see all files)
17 | * `OrchardCoreBlazorSample.Theme/Views/Layout.cshtml`
--------------------------------------------------------------------------------
/src/Themes/OrchardCoreBlazorSample.Theme/Views/Layout.cshtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | @* This is required for server-side Blazor. *@
10 |
11 |
12 | @RenderTitleSegments(Site.SiteName, "before")
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
28 |
29 |
30 |
31 |
32 | @await RenderSectionAsync("Header", false)
33 |
34 | @await RenderBodyAsync()
35 |
36 |
37 |
38 |
43 |
44 |
45 | @* It includes the blazor.server.js. You can use Orchard Core resource management for this if you have a Blazor base project
46 | (i.e. adding a "Blazor" resource for this file). *@
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/src/OrchardCoreBlazorSample.Web/Startup.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Builder;
2 | using Microsoft.AspNetCore.Hosting;
3 | using Microsoft.AspNetCore.StaticFiles;
4 | using Microsoft.Extensions.DependencyInjection;
5 | using Microsoft.Extensions.DependencyInjection.Extensions;
6 | using Microsoft.Extensions.FileProviders;
7 | using Microsoft.Extensions.Hosting;
8 | using Microsoft.Extensions.Options;
9 | using System;
10 |
11 | namespace OrchardCoreBlazorSample.Web
12 | {
13 | public class Startup
14 | {
15 | public void ConfigureServices(IServiceCollection services)
16 | {
17 | services.AddOrchardCms();
18 |
19 | // This is a workaround to make Blazor static contents accessible. See: https://github.com/OrchardCMS/OrchardCore/issues/2966#issuecomment-555506779
20 | services.TryAddEnumerable(ServiceDescriptor.Singleton, BlazorConfigureStaticFilesOptions>());
21 | }
22 |
23 | public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
24 | {
25 | if (env.IsDevelopment())
26 | {
27 | app.UseDeveloperExceptionPage();
28 | }
29 |
30 | app.UseStaticFiles();
31 |
32 | app.UseOrchardCore();
33 | }
34 | }
35 |
36 |
37 | // This is a workaround to make Blazor static contents accessible. See: https://github.com/OrchardCMS/OrchardCore/issues/2966#issuecomment-555506779
38 | public class BlazorConfigureStaticFilesOptions : IPostConfigureOptions
39 | {
40 | private readonly IWebHostEnvironment _environment;
41 |
42 | public BlazorConfigureStaticFilesOptions(IWebHostEnvironment environment)
43 | {
44 | _environment = environment;
45 | }
46 |
47 | public void PostConfigure(string name, StaticFileOptions options)
48 | {
49 | name = name ?? throw new ArgumentNullException(nameof(name));
50 | options = options ?? throw new ArgumentNullException(nameof(options));
51 |
52 | if (name != Options.DefaultName)
53 | {
54 | return;
55 | }
56 |
57 | // Basic initialization in case the options weren't initialized by any other component
58 | options.ContentTypeProvider = options.ContentTypeProvider ?? new FileExtensionContentTypeProvider();
59 | if (options.FileProvider == null && _environment.WebRootFileProvider == null)
60 | {
61 | throw new InvalidOperationException("Missing FileProvider.");
62 | }
63 |
64 | options.FileProvider = options.FileProvider ?? _environment.WebRootFileProvider;
65 |
66 | var provider = new ManifestEmbeddedFileProvider(typeof(IServerSideBlazorBuilder).Assembly);
67 |
68 | options.FileProvider = new CompositeFileProvider(provider, options.FileProvider);
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.sln.docstates
8 | *.sln.ide/
9 |
10 | # Build results
11 |
12 | [Dd]ebug/
13 | [Rr]elease/
14 | x64/
15 | build/
16 | app.publish/
17 | [Bb]in/
18 | [Oo]bj/
19 |
20 | # Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
21 | !packages/*/build/
22 |
23 | # MSTest test Results
24 | [Tt]est[Rr]esult*/
25 | [Bb]uild[Ll]og.*
26 |
27 | *_i.c
28 | *_p.c
29 | *.ilk
30 | *.meta
31 | *.obj
32 | *.pch
33 | *.pdb
34 | *.pgc
35 | *.pgd
36 | *.rsp
37 | *.sbr
38 | *.tlb
39 | *.tli
40 | *.tlh
41 | *.tmp
42 | *.tmp_proj
43 | *.log
44 | *.vspscc
45 | *.vssscc
46 | .builds
47 | *.pidb
48 | *.log
49 | *.scc
50 | project.lock.json
51 |
52 | # Visual C++ cache files
53 | ipch/
54 | *.aps
55 | *.ncb
56 | *.opensdf
57 | *.sdf
58 | *.cachefile
59 |
60 | # Visual Studio profiler
61 | *.psess
62 | *.vsp
63 | *.vspx
64 |
65 | # Guidance Automation Toolkit
66 | *.gpState
67 |
68 | # ReSharper is a .NET coding add-in
69 | _ReSharper*/
70 | *.[Rr]e[Ss]harper
71 |
72 | # TeamCity is a build add-in
73 | _TeamCity*
74 |
75 | # DotCover is a Code Coverage Tool
76 | *.dotCover
77 |
78 | # NCrunch
79 | *.ncrunch*
80 | .*crunch*.local.xml
81 |
82 | # Installshield output folder
83 | [Ee]xpress/
84 |
85 | # DocProject is a documentation generator add-in
86 | DocProject/buildhelp/
87 | DocProject/Help/*.HxT
88 | DocProject/Help/*.HxC
89 | DocProject/Help/*.hhc
90 | DocProject/Help/*.hhk
91 | DocProject/Help/*.hhp
92 | DocProject/Help/Html2
93 | DocProject/Help/html
94 |
95 | # Click-Once directory
96 | publish/
97 |
98 | # Publish Web Output
99 | *.Publish.xml
100 | *.pubxml
101 |
102 | # NuGet Packages Directory
103 | packages/
104 |
105 | # Windows Azure Build Output
106 | csx
107 | *.build.csdef
108 |
109 | # Windows Store app package directory
110 | AppPackages/
111 |
112 | # Others
113 | *.Cache
114 | !OrchardCore.Environment.Cache
115 | ClientBin/
116 | [Ss]tyle[Cc]op.*
117 | ~$*
118 | *~
119 | *.dbmdl
120 | *.[Pp]ublish.xml
121 | *.pfx
122 | *.publishsettings
123 |
124 | # RIA/Silverlight projects
125 | Generated_Code/
126 |
127 | # Backup & report files from converting an old project file to a newer
128 | # Visual Studio version. Backup files are not needed, because we have git ;-)
129 | _UpgradeReport_Files/
130 | Backup*/
131 | UpgradeLog*.XML
132 | UpgradeLog*.htm
133 |
134 | # SQL Server files
135 | App_Data/*.mdf
136 | App_Data/*.ldf
137 |
138 |
139 | ## Windows and MAC detritus
140 |
141 | # Windows image file caches
142 | Thumbs.db
143 | ehthumbs.db
144 |
145 | # Folder config file
146 | Desktop.ini
147 |
148 | # Recycle Bin used on file shares
149 | $RECYCLE.BIN/
150 |
151 | # Mac
152 | .DS_Store
153 |
154 |
155 | ## ASP.NET Core and Orchard Core specifics
156 |
157 | App_Data/
158 | glob:*.user
159 | *.patch
160 | *.hg
161 | build/
162 | /buildazure
163 | /buildtasks
164 | /artifacts
165 | site/
166 | *.sln.cache
167 | log.xml
168 | profiling/
169 | *.orig
170 | .vs/
171 | #.vscode/
172 | .build/
173 | .testPublish/
174 |
175 | nuget.exe
176 | .nuget/
177 |
178 | # Enable all /lib artifacts
179 | !lib/*/*.*
180 |
181 | # Exclude node modules
182 | node_modules/
183 |
184 | # Exclude wwwroot and add exceptions
185 | **/wwwroot/*
186 | !**/wwwroot/favicon.ico
187 | !**/wwwroot/.placeholder
188 |
189 | src/*.Web/Localization
190 |
--------------------------------------------------------------------------------
/OrchardCoreBlazorSample.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.29613.14
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{6BBD69CF-91EE-46BC-A387-3BAE21BC3CBD}"
7 | EndProject
8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OrchardCoreBlazorSample.Web", "src\OrchardCoreBlazorSample.Web\OrchardCoreBlazorSample.Web.csproj", "{A50B4784-5F89-463F-BD70-86DAE7E597B3}"
9 | EndProject
10 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{7AFD8A61-8170-4430-8777-BDFB4B7B33F2}"
11 | EndProject
12 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E99F3FFB-8CFA-4A8B-BF44-ABB911203CC3}"
13 | ProjectSection(SolutionItems) = preProject
14 | NuGet.config = NuGet.config
15 | Readme.md = Readme.md
16 | EndProjectSection
17 | EndProject
18 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrchardCoreBlazorSample.Module1", "src\Modules\OrchardCoreBlazorSample.Module1\OrchardCoreBlazorSample.Module1.csproj", "{692F72C7-1B43-4F5A-8BFA-14F857D894B7}"
19 | EndProject
20 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Themes", "Themes", "{DCCE3FF3-97E5-4C0A-9802-9B75E8EC284D}"
21 | EndProject
22 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrchardCoreBlazorSample.Theme", "src\Themes\OrchardCoreBlazorSample.Theme\OrchardCoreBlazorSample.Theme.csproj", "{E4C64284-B542-4A02-9C88-C047C50CCE2F}"
23 | EndProject
24 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OrchardCoreBlazorSample.Module2", "src\Modules\OrchardCoreBlazorSample.Module2\OrchardCoreBlazorSample.Module2.csproj", "{6677585C-43EB-429D-8983-A61282793DC2}"
25 | EndProject
26 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrchardCoreBlazorSample.Module1.Blazor", "src\Modules\OrchardCoreBlazorSample.Module1.Blazor\OrchardCoreBlazorSample.Module1.Blazor.csproj", "{105A1233-1003-4D4E-BAC5-DFA1C399C576}"
27 | EndProject
28 | Global
29 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
30 | Debug|Any CPU = Debug|Any CPU
31 | Release|Any CPU = Release|Any CPU
32 | EndGlobalSection
33 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
34 | {A50B4784-5F89-463F-BD70-86DAE7E597B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
35 | {A50B4784-5F89-463F-BD70-86DAE7E597B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
36 | {A50B4784-5F89-463F-BD70-86DAE7E597B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
37 | {A50B4784-5F89-463F-BD70-86DAE7E597B3}.Release|Any CPU.Build.0 = Release|Any CPU
38 | {692F72C7-1B43-4F5A-8BFA-14F857D894B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
39 | {692F72C7-1B43-4F5A-8BFA-14F857D894B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
40 | {692F72C7-1B43-4F5A-8BFA-14F857D894B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
41 | {692F72C7-1B43-4F5A-8BFA-14F857D894B7}.Release|Any CPU.Build.0 = Release|Any CPU
42 | {E4C64284-B542-4A02-9C88-C047C50CCE2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
43 | {E4C64284-B542-4A02-9C88-C047C50CCE2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
44 | {E4C64284-B542-4A02-9C88-C047C50CCE2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
45 | {E4C64284-B542-4A02-9C88-C047C50CCE2F}.Release|Any CPU.Build.0 = Release|Any CPU
46 | {6677585C-43EB-429D-8983-A61282793DC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
47 | {6677585C-43EB-429D-8983-A61282793DC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
48 | {6677585C-43EB-429D-8983-A61282793DC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
49 | {6677585C-43EB-429D-8983-A61282793DC2}.Release|Any CPU.Build.0 = Release|Any CPU
50 | {105A1233-1003-4D4E-BAC5-DFA1C399C576}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
51 | {105A1233-1003-4D4E-BAC5-DFA1C399C576}.Debug|Any CPU.Build.0 = Debug|Any CPU
52 | {105A1233-1003-4D4E-BAC5-DFA1C399C576}.Release|Any CPU.ActiveCfg = Release|Any CPU
53 | {105A1233-1003-4D4E-BAC5-DFA1C399C576}.Release|Any CPU.Build.0 = Release|Any CPU
54 | EndGlobalSection
55 | GlobalSection(SolutionProperties) = preSolution
56 | HideSolutionNode = FALSE
57 | EndGlobalSection
58 | GlobalSection(NestedProjects) = preSolution
59 | {A50B4784-5F89-463F-BD70-86DAE7E597B3} = {6BBD69CF-91EE-46BC-A387-3BAE21BC3CBD}
60 | {7AFD8A61-8170-4430-8777-BDFB4B7B33F2} = {6BBD69CF-91EE-46BC-A387-3BAE21BC3CBD}
61 | {692F72C7-1B43-4F5A-8BFA-14F857D894B7} = {7AFD8A61-8170-4430-8777-BDFB4B7B33F2}
62 | {DCCE3FF3-97E5-4C0A-9802-9B75E8EC284D} = {6BBD69CF-91EE-46BC-A387-3BAE21BC3CBD}
63 | {E4C64284-B542-4A02-9C88-C047C50CCE2F} = {DCCE3FF3-97E5-4C0A-9802-9B75E8EC284D}
64 | {6677585C-43EB-429D-8983-A61282793DC2} = {7AFD8A61-8170-4430-8777-BDFB4B7B33F2}
65 | {105A1233-1003-4D4E-BAC5-DFA1C399C576} = {7AFD8A61-8170-4430-8777-BDFB4B7B33F2}
66 | EndGlobalSection
67 | GlobalSection(ExtensibilityGlobals) = postSolution
68 | SolutionGuid = {80347105-FE2F-4697-A6C2-F91E45706DF6}
69 | EndGlobalSection
70 | EndGlobal
71 |
--------------------------------------------------------------------------------