Browse Source

Update `module` template to support `Blazor Web App`.

pull/18876/head
maliming 2 years ago
parent
commit
7328e35e20
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 21
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingService.cs
  2. 6
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/wwwroot/main.css
  3. 9
      templates/module/aspnet-core/MyCompanyName.MyProjectName.sln
  4. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/appsettings.json
  5. 3
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/FodyWeavers.xml
  6. 30
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/FodyWeavers.xsd
  7. 36
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyCompanyName.MyProjectName.Blazor.Host.Client.csproj
  8. 0
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyCompanyName.MyProjectName.Blazor.Host.abppkg
  9. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyProjectNameBlazorHostAutoMapperProfile.cs
  10. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyProjectNameBlazorHostBundleContributor.cs
  11. 17
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyProjectNameBlazorHostClientModule.cs
  12. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyProjectNameHostBrandingProvider.cs
  13. 5
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyProjectNameHostMenuContributor.cs
  14. 0
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/Pages/Index.razor
  15. 23
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/Program.cs
  16. 12
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/Routes.razor
  17. 11
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/_Imports.razor
  18. 0
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/wwwroot/appsettings.Development.json
  19. 10
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/wwwroot/appsettings.json
  20. 0
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/wwwroot/favicon.ico
  21. 0
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/wwwroot/global.css
  22. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/wwwroot/global.js
  23. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/wwwroot/main.css
  24. 58
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/App.razor
  25. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/FodyWeavers.xml
  26. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/FodyWeavers.xsd
  27. 40
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj
  28. 51
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Program.cs
  29. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Properties/launchSettings.json
  30. 10
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/_Imports.razor
  31. 45
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Components/App.razor
  32. 0
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Components/Pages/Index.razor
  33. 6
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Components/Pages/Index.razor.cs
  34. 0
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Components/Pages/Index.razor.css
  35. 0
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Components/Pages/_ViewImports.cshtml
  36. 14
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Components/Routes.razor
  37. 19
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs
  38. 5
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Pages/Index.razor.cs
  39. 38
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Pages/_Host.cshtml
  40. 3
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/_Imports.razor

21
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingService.cs

@ -104,9 +104,24 @@ public class BundlingService : IBundlingService, ITransientDependency
scriptDefinitions = GenerateScriptDefinitions(scriptContext);
}
var fileName = bundleConfig.IsBlazorWebApp
? Path.Combine(directory.RemovePostFix(".Client")!, "Components", "App.razor")
: Path.Combine(PathHelper.GetWwwRootPath(directory), "index.html");
var fileName = Path.Combine(PathHelper.GetWwwRootPath(directory), "index.html");
if (bundleConfig.IsBlazorWebApp)
{
var projectDirectory = directory.RemovePostFix(".Client")!;
if (File.Exists(Path.Combine(projectDirectory, "Components", "App.razor")))
{
fileName = Path.Combine(projectDirectory, "Components", "App.razor");
}
else if (File.Exists(Path.Combine(projectDirectory, "App.razor")))
{
fileName = Path.Combine(projectDirectory, "App.razor");
}
else
{
throw new BundlingException($"App.razor file could not be found on the {projectDirectory} project.");
}
}
await UpdateDependenciesInBlazorFileAsync(fileName, styleDefinitions, scriptDefinitions);

6
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/wwwroot/main.css

@ -54,4 +54,8 @@
transform: scale(1.0);
-webkit-transform: scale(1.0);
}
}
}
#ApplicationContainer > div:first-child:not(:only-child) {
display: none !important;
}

9
templates/module/aspnet-core/MyCompanyName.MyProjectName.sln

@ -51,7 +51,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.Blazor", "src\MyCompanyName.MyProjectName.Blazor\MyCompanyName.MyProjectName.Blazor.csproj", "{827FCC18-A22B-4175-82CD-1233F6DEE8FB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.Blazor.Host", "host\MyCompanyName.MyProjectName.Blazor.Host\MyCompanyName.MyProjectName.Blazor.Host.csproj", "{D7E0F672-F5E2-4338-AFF4-4E5091C55A62}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.Blazor.Host.Client", "host\MyCompanyName.MyProjectName.Blazor.Host.Client\MyCompanyName.MyProjectName.Blazor.Host.Client.csproj", "{D7E0F672-F5E2-4338-AFF4-4E5091C55A62}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.Blazor.Server", "src\MyCompanyName.MyProjectName.Blazor.Server\MyCompanyName.MyProjectName.Blazor.Server.csproj", "{299BE52E-823F-408E-9C6D-7E2F81BA34FF}"
EndProject
@ -61,6 +61,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.Installer", "src\MyCompanyName.MyProjectName.Installer\MyCompanyName.MyProjectName.Installer.csproj", "{BE39FD00-745B-4049-8161-FC129817CBE4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.Blazor.Host", "host\MyCompanyName.MyProjectName.Blazor.Host\MyCompanyName.MyProjectName.Blazor.Host.csproj", "{C33FD057-839D-4F92-BA81-DD40B03FB75D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -171,6 +173,10 @@ Global
{BE39FD00-745B-4049-8161-FC129817CBE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BE39FD00-745B-4049-8161-FC129817CBE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BE39FD00-745B-4049-8161-FC129817CBE4}.Release|Any CPU.Build.0 = Release|Any CPU
{C33FD057-839D-4F92-BA81-DD40B03FB75D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C33FD057-839D-4F92-BA81-DD40B03FB75D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C33FD057-839D-4F92-BA81-DD40B03FB75D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C33FD057-839D-4F92-BA81-DD40B03FB75D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -202,6 +208,7 @@ Global
{F0EE5760-262D-456A-AA7C-E84F484A05F6} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{FEA752A1-5B4E-49E9-B1F3-DDC25E41BB52} = {E400416D-2895-4512-9D17-90681EEC7E0A}
{BE39FD00-745B-4049-8161-FC129817CBE4} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{C33FD057-839D-4F92-BA81-DD40B03FB75D} = {E400416D-2895-4512-9D17-90681EEC7E0A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD}

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/appsettings.json

@ -1,7 +1,7 @@
{
"App": {
"SelfUrl": "https://localhost:44301/",
"CorsOrigins": "https://*.MyProjectName.com,http://localhost:4200,http://localhost:44307,https://localhost:44307,https://localhost:44300"
"CorsOrigins": "https://*.MyProjectName.com,http://localhost:4200,http://localhost:44307,https://localhost:44307,https://localhost:44300,https://localhost:44305/"
},
"AppSelfUrl": "https://localhost:44301/",
"ConnectionStrings": {
@ -19,7 +19,7 @@
},
"MyProjectName_Blazor": {
"ClientId": "MyProjectName_Blazor",
"RootUrl": "https://localhost:44307"
"RootUrl": "https://localhost:44305"
},
"MyProjectName_App": {
"ClientId": "MyProjectName_App",

3
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

36
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyCompanyName.MyProjectName.Blazor.Host.Client.csproj

@ -0,0 +1,36 @@
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>
<RootNamespace>MyCompanyName.MyProjectName.Blazor.Host.Client</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazorise.Bootstrap5" Version="1.4.1" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.4.1" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="8.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.Autofac.WebAssembly\Volo.Abp.Autofac.WebAssembly.csproj" />
<ProjectReference Include="..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\..\modules\account\src\Volo.Abp.Account.Application.Contracts\Volo.Abp.Account.Application.Contracts.csproj" />
<ProjectReference Include="..\..\..\..\..\modules\identity\src\Volo.Abp.Identity.Blazor.WebAssembly\Volo.Abp.Identity.Blazor.WebAssembly.csproj" />
<ProjectReference Include="..\..\..\..\..\modules\tenant-management\src\Volo.Abp.TenantManagement.Blazor.WebAssembly\Volo.Abp.TenantManagement.Blazor.WebAssembly.csproj" />
<ProjectReference Include="..\..\..\..\..\modules\setting-management\src\Volo.Abp.SettingManagement.Blazor.WebAssembly\Volo.Abp.SettingManagement.Blazor.WebAssembly.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MyCompanyName.MyProjectName.Host.Shared\MyCompanyName.MyProjectName.Host.Shared.csproj" />
<ProjectReference Include="..\..\src\MyCompanyName.MyProjectName.Blazor.WebAssembly\MyCompanyName.MyProjectName.Blazor.WebAssembly.csproj" />
</ItemGroup>
</Project>

0
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.abppkg → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyCompanyName.MyProjectName.Blazor.Host.abppkg

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyProjectNameBlazorHostAutoMapperProfile.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyProjectNameBlazorHostAutoMapperProfile.cs

@ -1,6 +1,6 @@
using AutoMapper;
namespace MyCompanyName.MyProjectName.Blazor.Host;
namespace MyCompanyName.MyProjectName.Blazor.Host.Client;
public class MyProjectNameBlazorHostAutoMapperProfile : Profile
{

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyProjectNameBlazorHostBundleContributor.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyProjectNameBlazorHostBundleContributor.cs

@ -1,6 +1,6 @@
using Volo.Abp.Bundling;
namespace MyCompanyName.MyProjectName.Blazor.Host;
namespace MyCompanyName.MyProjectName.Blazor.Host.Client;
public class MyProjectNameBlazorHostBundleContributor : IBundleContributor
{

17
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyProjectNameBlazorHostModule.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyProjectNameBlazorHostClientModule.cs

@ -5,9 +5,8 @@ using Blazorise.Icons.FontAwesome;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Account;
using MyCompanyName.MyProjectName.Blazor.WebAssembly;
using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic;
using Volo.Abp.Account;
using Volo.Abp.AspNetCore.Components.Web.Theming.Routing;
using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme;
using Volo.Abp.Autofac.WebAssembly;
@ -18,7 +17,7 @@ using Volo.Abp.SettingManagement.Blazor.WebAssembly;
using Volo.Abp.TenantManagement.Blazor.WebAssembly;
using Volo.Abp.UI.Navigation;
namespace MyCompanyName.MyProjectName.Blazor.Host;
namespace MyCompanyName.MyProjectName.Blazor.Host.Client;
[DependsOn(
typeof(AbpAutofacWebAssemblyModule),
@ -29,7 +28,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Host;
typeof(AbpSettingManagementBlazorWebAssemblyModule),
typeof(MyProjectNameBlazorWebAssemblyModule)
)]
public class MyProjectNameBlazorHostModule : AbpModule
public class MyProjectNameBlazorHostClientModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
@ -40,7 +39,6 @@ public class MyProjectNameBlazorHostModule : AbpModule
ConfigureHttpClient(context, environment);
ConfigureBlazorise(context);
ConfigureRouter(context);
ConfigureUI(builder);
ConfigureMenu(context);
ConfigureAutoMapper(context);
}
@ -49,7 +47,7 @@ public class MyProjectNameBlazorHostModule : AbpModule
{
Configure<AbpRouterOptions>(options =>
{
options.AppAssembly = typeof(MyProjectNameBlazorHostModule).Assembly;
options.AppAssembly = typeof(MyProjectNameBlazorHostClientModule).Assembly;
});
}
@ -77,11 +75,6 @@ public class MyProjectNameBlazorHostModule : AbpModule
});
}
private static void ConfigureUI(WebAssemblyHostBuilder builder)
{
builder.RootComponents.Add<App>("#ApplicationContainer");
}
private static void ConfigureHttpClient(ServiceConfigurationContext context, IWebAssemblyHostEnvironment environment)
{
context.Services.AddTransient(sp => new HttpClient
@ -94,7 +87,7 @@ public class MyProjectNameBlazorHostModule : AbpModule
{
Configure<AbpAutoMapperOptions>(options =>
{
options.AddMaps<MyProjectNameBlazorHostModule>();
options.AddMaps<MyProjectNameBlazorHostClientModule>();
});
}
}

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyProjectNameHostBrandingProvider.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyProjectNameHostBrandingProvider.cs

@ -1,6 +1,6 @@
using Volo.Abp.Ui.Branding;
namespace MyCompanyName.MyProjectName.Blazor.Host;
namespace MyCompanyName.MyProjectName.Blazor.Host.Client;
public class MyProjectNameHostBrandingProvider : DefaultBrandingProvider
{

5
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyProjectNameHostMenuContributor.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyProjectNameHostMenuContributor.cs

@ -1,10 +1,11 @@
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Volo.Abp.Account.Localization;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.UI.Navigation;
using Volo.Abp.Account.Localization;
namespace MyCompanyName.MyProjectName.Blazor.Host;
namespace MyCompanyName.MyProjectName.Blazor.Host.Client;
public class MyProjectNameHostMenuContributor : IMenuContributor
{

0
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Pages/Index.razor → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/Pages/Index.razor

23
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/Program.cs

@ -0,0 +1,23 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
namespace MyCompanyName.MyProjectName.Blazor.Host.Client;
public class Program
{
public async static Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
var application = await builder.AddApplicationAsync<MyProjectNameBlazorHostClientModule>(options =>
{
options.UseAutofac();
});
var host = builder.Build();
await application.InitializeApplicationAsync(host.Services);
await host.RunAsync();
}
}

12
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/Routes.razor

@ -0,0 +1,12 @@
@using Volo.Abp.AspNetCore.Components.WebAssembly.WebApp
@using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic
<Router AppAssembly="typeof(Program).Assembly" AdditionalAssemblies="WebAppAdditionalAssembliesHelper.GetAssemblies<MyProjectNameBlazorHostClientModule>()">
<Found Context="routeData">
<AuthorizeRouteView RouteData="routeData" DefaultLayout="typeof(MainLayout)">
<NotAuthorized>
<RedirectToLogin />
</NotAuthorized>
</AuthorizeRouteView>
<FocusOnNavigate RouteData="routeData" Selector="h1" />
</Found>
</Router>

11
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/_Imports.razor

@ -0,0 +1,11 @@
@using System.Net.Http
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.WebAssembly.Http
@using Microsoft.JSInterop
@using Volo.Abp.AspNetCore.Components.WebAssembly
@using MyCompanyName.MyProjectName.Blazor
@using Blazorise
@using Blazorise.DataGrid

0
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/appsettings.Development.json → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/wwwroot/appsettings.Development.json

10
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/appsettings.json → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/wwwroot/appsettings.json

@ -14,5 +14,15 @@
"MyProjectName": {
"BaseUrl": "https://localhost:44300/"
}
},
"AbpCli": {
"Bundle": {
"Mode": "BundleAndMinify", /* Options: None, Bundle, BundleAndMinify */
"Name": "global",
"IsBlazorWebApp": true,
"Parameters": {
}
}
}
}

0
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/favicon.ico → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/wwwroot/favicon.ico

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

0
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/global.css → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/wwwroot/global.css

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/global.js → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/wwwroot/global.js

File diff suppressed because one or more lines are too long

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/main.css → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/wwwroot/main.css

@ -46,3 +46,7 @@
-webkit-transform: scale(1.0);
}
}
#ApplicationContainer > div:first-child:not(:only-child) {
display: none !important;
}

58
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/index.html → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/App.razor

@ -1,28 +1,36 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>MyCompanyName.MyProjectName.Blazor</title>
<base href="/" />
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>MyCompanyName.MyProjectName.Blazor</title>
<base href="/" />
<!--ABP:Styles-->
<link href="global.css?_v=638411963156982818" rel="stylesheet"/>
<link href="global.css?_v=638424689870700471" rel="stylesheet"/>
<link href="main.css" rel="stylesheet"/>
<!--/ABP:Styles-->
</head>
<body class="abp-application-layout bg-light">
<div id="ApplicationContainer">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>
<!--/ABP:Styles-->
<HeadOutlet @rendermode="new InteractiveWebAssemblyRenderMode(prerender: false)" />
</head>
<body class="abp-application-layout bg-light">
<script src="_framework/blazor.web.js"></script>
<div id="ApplicationContainer">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
<Routes @rendermode="new InteractiveWebAssemblyRenderMode(prerender: false)"/>
</div>
<!--ABP:Scripts-->
<script src="global.js?_v=638411963157814873"></script>
<!--/ABP:Scripts-->
</body>
</html>
<script src="global.js?_v=638424689871310405"></script>
<!--/ABP:Scripts-->
</body>
</html>

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/FodyWeavers.xml

@ -1,3 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait />
</Weavers>

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/FodyWeavers.xsd

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">

40
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj

@ -1,35 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<Project Sdk="Microsoft.NET.Sdk.Web">
<Import Project="..\..\common.props" />
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazorise.Bootstrap5" Version="1.4.1" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.4.1" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="8.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.Autofac.WebAssembly\Volo.Abp.Autofac.WebAssembly.csproj" />
<ProjectReference Include="..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\..\modules\account\src\Volo.Abp.Account.Application.Contracts\Volo.Abp.Account.Application.Contracts.csproj" />
<ProjectReference Include="..\..\..\..\..\modules\identity\src\Volo.Abp.Identity.Blazor.WebAssembly\Volo.Abp.Identity.Blazor.WebAssembly.csproj" />
<ProjectReference Include="..\..\..\..\..\modules\tenant-management\src\Volo.Abp.TenantManagement.Blazor.WebAssembly\Volo.Abp.TenantManagement.Blazor.WebAssembly.csproj" />
<ProjectReference Include="..\..\..\..\..\modules\setting-management\src\Volo.Abp.SettingManagement.Blazor.WebAssembly\Volo.Abp.SettingManagement.Blazor.WebAssembly.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MyCompanyName.MyProjectName.Host.Shared\MyCompanyName.MyProjectName.Host.Shared.csproj" />
<ProjectReference Include="..\..\src\MyCompanyName.MyProjectName.Blazor.WebAssembly\MyCompanyName.MyProjectName.Blazor.WebAssembly.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.1" />
<ProjectReference Include="..\MyCompanyName.MyProjectName.Blazor.Host.Client\MyCompanyName.MyProjectName.Blazor.Host.Client.csproj" />
</ItemGroup>
</Project>

51
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Program.cs

@ -1,23 +1,42 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using MyCompanyName.MyProjectName.Blazor.Host;
using MyCompanyName.MyProjectName.Blazor.Host.Client;
using Volo.Abp.AspNetCore.Components.WebAssembly.WebApp;
namespace MyCompanyName.MyProjectName.Blazor.Host;
var builder = WebApplication.CreateBuilder(args);
public class Program
builder.Services.Configure<RouteOptions>(options =>
{
public async static Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
options.SuppressCheckForUnhandledSecurityMetadata = true;
});
var application = await builder.AddApplicationAsync<MyProjectNameBlazorHostModule>(options =>
{
options.UseAutofac();
});
// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveWebAssemblyComponents();
var host = builder.Build();
var app = builder.Build();
await application.InitializeApplicationAsync(host.Services);
await host.RunAsync();
}
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseWebAssemblyDebugging();
}
else
{
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseAntiforgery();
app.MapRazorComponents<App>()
.AddInteractiveWebAssemblyRenderMode()
.AddAdditionalAssemblies(WebAppAdditionalAssembliesHelper.GetAssemblies<MyProjectNameBlazorHostClientModule>());
await app.RunAsync();

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Properties/launchSettings.json

@ -11,15 +11,13 @@
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"MyCompanyName.MyProjectName.Blazor": {
"MyCompanyName.MyProjectName.Blazor.Host": {
"commandName": "Project",
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "https://localhost:44305",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"

10
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/_Imports.razor

@ -1,11 +1,9 @@
@using System.Net.Http
@using Microsoft.AspNetCore.Components.Authorization
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.WebAssembly.Http
@using static Microsoft.AspNetCore.Components.Web.RenderMode
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using Volo.Abp.AspNetCore.Components.WebAssembly
@using MyCompanyName.MyProjectName.Blazor
@using Blazorise
@using Blazorise.DataGrid
@using MyCompanyName.MyProjectName.Blazor.Host.Client

45
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Components/App.razor

@ -0,0 +1,45 @@
@using Volo.Abp.Localization
@using System.Globalization
@using Microsoft.Extensions.Hosting
@using Volo.Abp.AspNetCore.Components.Server.Theming.Bundling
@using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling
@inject IHostEnvironment Env
@{
var rtl = CultureHelper.IsRtl ? "rtl" : string.Empty;
}
<!DOCTYPE html>
<html lang="@CultureInfo.CurrentCulture.Name" dir="@rtl">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>MyCompanyName.MyProjectName.Blazor.Server</title>
<base href="/" />
<AbpStyles BundleName="@BlazorBasicThemeBundles.Styles.Global" />
<HeadOutlet @rendermode="InteractiveServer" />
</head>
<body>
<Routes @rendermode="InteractiveServer" />
<AbpScripts BundleName="@BlazorBasicThemeBundles.Scripts.Global" />
<div id="blazor-error-ui">
@if (Env.IsDevelopment())
{
<text>An unhandled exception has occurred. See browser dev tools for details.</text>
}
else if (Env.IsStaging() || Env.IsProduction())
{
<text>An error has occurred. This application may no longer respond until reloaded.</text>
}
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
</body>
</html>

0
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Pages/Index.razor → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Components/Pages/Index.razor

6
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Components/Pages/Index.razor.cs

@ -0,0 +1,6 @@
namespace MyCompanyName.MyProjectName.Blazor.Server.Pages;
public partial class Index
{
}

0
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Pages/Index.razor.css → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Components/Pages/Index.razor.css

0
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Pages/_ViewImports.cshtml → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Components/Pages/_ViewImports.cshtml

14
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Components/Routes.razor

@ -0,0 +1,14 @@
@using Volo.Abp.AspNetCore.Components.Web.Theming.Routing
@using Microsoft.Extensions.Options
@using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic
@inject IOptions<AbpRouterOptions> RouterOptions
<Router AppAssembly="typeof(Program).Assembly" AdditionalAssemblies="RouterOptions.Value.AdditionalAssemblies">
<Found Context="routeData">
<AuthorizeRouteView RouteData="routeData" DefaultLayout="typeof(MainLayout)">
<NotAuthorized>
<RedirectToLogin />
</NotAuthorized>
</AuthorizeRouteView>
<FocusOnNavigate RouteData="routeData" Selector="h1" />
</Found>
</Router>

19
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs

@ -8,7 +8,9 @@ using Microsoft.AspNetCore.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using Microsoft.OpenApi.Models;
using MyCompanyName.MyProjectName.Blazor.Server.Host.Components;
using MyCompanyName.MyProjectName.Blazor.Server.Host.Menus;
using MyCompanyName.MyProjectName.EntityFrameworkCore;
using MyCompanyName.MyProjectName.Localization;
@ -17,6 +19,7 @@ using OpenIddict.Validation.AspNetCore;
using Volo.Abp;
using Volo.Abp.Account;
using Volo.Abp.Account.Web;
using Volo.Abp.AspNetCore.Components.Server;
using Volo.Abp.AspNetCore.Components.Server.BasicTheme;
using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling;
using Volo.Abp.AspNetCore.Components.Web.Theming.Routing;
@ -108,6 +111,11 @@ public class MyProjectNameBlazorHostModule : AbpModule
options.UseAspNetCore();
});
});
PreConfigure<AbpAspNetCoreComponentsWebOptions>(options =>
{
options.IsBlazorWebApp = true;
});
}
public override void ConfigureServices(ServiceConfigurationContext context)
@ -115,6 +123,10 @@ public class MyProjectNameBlazorHostModule : AbpModule
var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration();
// Add services to the container.
context.Services.AddRazorComponents()
.AddInteractiveServerComponents();
context.Services.ForwardIdentityAuthenticationForBearer(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme);
Configure<AbpDbContextOptions>(options =>
@ -248,12 +260,19 @@ public class MyProjectNameBlazorHostModule : AbpModule
}
app.UseUnitOfWork();
app.UseAntiforgery();
app.UseAuthorization();
app.UseSwagger();
app.UseAbpSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "MyProjectName API");
});
app.UseConfiguredEndpoints(builder =>
{
builder.MapRazorComponents<App>()
.AddInteractiveServerRenderMode()
.AddAdditionalAssemblies(builder.ServiceProvider.GetRequiredService<IOptions<AbpRouterOptions>>().Value.AdditionalAssemblies.ToArray());
});
app.UseConfiguredEndpoints();
using (var scope = context.ServiceProvider.CreateScope())

5
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Pages/Index.razor.cs

@ -1,5 +0,0 @@
namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Pages;
public partial class Index
{
}

38
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Pages/_Host.cshtml

@ -1,38 +0,0 @@
@page "/"
@namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Pages
@using System.Globalization
@using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling
@using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic
@using Volo.Abp.Localization
@{
Layout = null;
var rtl = CultureHelper.IsRtl ? "rtl" : string.Empty;
}
<!DOCTYPE html>
<html lang="@CultureInfo.CurrentCulture.Name" dir="@rtl">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>MyCompanyName.MyProjectName.Blazor.Server</title>
<base href="~/" />
<abp-style-bundle name="@BlazorBasicThemeBundles.Styles.Global" />
</head>
<body class="abp-application-layout bg-light @rtl">
<component type="typeof(App)" render-mode="Server" />
<div id="blazor-error-ui">
<environment include="Staging,Production">
An error has occurred. This application may no longer respond until reloaded.
</environment>
<environment include="Development">
An unhandled exception has occurred. See browser dev tools for details.
</environment>
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
<abp-script-bundle name="@BlazorBasicThemeBundles.Scripts.Global" />
</body>
</html>

3
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/_Imports.razor

@ -5,9 +5,10 @@
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using static Microsoft.AspNetCore.Components.Web.RenderMode
@using Microsoft.JSInterop
@using MyCompanyName.MyProjectName.Blazor.Server
@using Blazorise
@using Blazorise.DataGrid
@using Volo.Abp.BlazoriseUI
@using Volo.Abp.BlazoriseUI.Components
@using Volo.Abp.BlazoriseUI.Components

Loading…
Cancel
Save