Version
Google Translate

VCP 4.x to 4.3 Migration Guide

This version comes with some changes in the startup template, mostly related to Blazor UI. This document explains the breaking changes. However, it is suggested to compare the startup templates manually to see all the changes and apply to your solution.

Open-Source (Framework)

If you are using one of the open-source startup templates, then you can check the following sections to apply the related breaking changes:

UseVirtualFiles Has Been Marked as Obsolete

  • app.UseVirtualFiles() has been marked as obsolete. Use app.UseStaticFiles() instead. VCP will handle the virtual file system integrated to the static files middleware.

Blazor UI

Implemented the Blazor Server Side support with this release. It required some packages and namespaces arrangements. Existing Blazor (WebAssembly) applications should done the changes explained in this section.

Namespace Changes

  • VcpBlazorMessageLocalizerHelper -> moved to Verto.Vcp.AspNetCore.Components.Web
  • VcpRouterOptions -> moved to Verto.Vcp.AspNetCore.Components.Web.Theming.Routing
  • VcpToolbarOptions and IToolbarContributor -> moved to Verto.Vcp.AspNetCore.Components.Web.Theming.Toolbars
  • IVcpUtilsService -> moved to Verto.Vcp.AspNetCore.Components.Web
  • PageHeader -> moved to Verto.Vcp.AspNetCore.Components.Web.Theming.Layout.

In practice, if your application is broken because of the Verto.Vcp.AspNetCore.Components.WebAssembly.* namespace, please try to switch to Verto.Vcp.AspNetCore.Components.Web.* namespace.

Remember to change namespaces in the _Imports.razor files.

Package Changes

No change on the framework packages, but module packages are separated as Web Assembly & Server;

  • Use Verto.Vcp.Identity.Blazor.WebAssembly NuGet package instead of Verto.Vcp.Identity.Blazor package. Also, change VcpIdentityBlazorModule usage to VcpIdentityBlazorWebAssemblyModule in the [DependsOn] attribute on your module class.
  • Use Verto.Vcp.TenantManagement.Blazor.WebAssembly NuGet package instead of Verto.Vcp.TenantManagement.Blazor package. Also, change VcpTenantManagementBlazorModule usage to VcpTenantManagementBlazorWebAssemblyModule in the [DependsOn] attribute on your module class.
  • Use Verto.Vcp.PermissionManagement.Blazor.WebAssembly NuGet package instead of Verto.Vcp.PermissionManagement.Blazor package. Also, change VcpPermissionManagementBlazorModule usage to VcpPermissionManagementBlazorWebAssemblyModule in the [DependsOn] attribute on your module class.
  • Use Verto.Vcp.SettingManagement.Blazor.WebAssembly NuGet package instead of Verto.Vcp.SettingManagement.Blazor package. Also, change VcpSettingManagementBlazorModule usage to VcpSettingManagementBlazorWebAssemblyModule in the [DependsOn] attribute on your module class.
  • Use Verto.Vcp.FeatureManagement.Blazor.WebAssembly NuGet package instead of Verto.Vcp.FeatureManagement.Blazor package. Also, change VcpFeatureManagementBlazorModule usage to VcpFeatureManagementBlazorWebAssemblyModule in the [DependsOn] attribute on your module class.

Other Changes

  • EntityAction.RequiredPermission has been marked as obsolete, because of performance reasons. It is suggested to use the Visible property by checking the permission/policy yourself and assigning to a variable.

Resource Reference Changes

Open <YourProjectName>BundleContributor.cs and replace context.Add("main.css"); to context.Add("main.css", true);

Then run vcp bundle command in the blazor folder to update resource references.

PRO

Please check the Open-Source (Framework) section before reading this section. The listed topics might affect your application and you might need to take care of them.

If you are a paid-license owner and using the VCP's paid version, then please follow the following sections to get informed about the breaking changes and apply the necessary ones:

Identity Pro Module

With this release, we've published new packages for the Identity.Pro module. These packages extend the open source Identity module and will provide flexibility to us for adding unique features to the Identity Pro module.

Existing applications should replace some usages as described below.

Package Changes

  • Replace Verto.Vcp.Identity.Domain with the new Verto.Vcp.Identity.Pro.Domain package and also replace VcpIdentityDomainModule usage with VcpIdentityProDomainModule in your module's [DependsOn] attribute.
  • Replace Verto.Vcp.Identity.Domain.Shared with the new Verto.Vcp.Identity.Pro.Domain.Shared package and also replace VcpIdentityDomainSharedModule usage with VcpIdentityProDomainSharedModule in your module's [DependsOn] attribute.
  • If you are using EF Core, Replace Verto.Vcp.Identity.EntityFrameworkCore with the new Verto.Vcp.Identity.Pro.EntityFrameworkCore package and also replace VcpIdentityEntityFrameworkCoreModule usage with VcpIdentityProEntityFrameworkCoreModule in your module's [DependsOn] attribute.
  • If you are using MongoDB, Replace Verto.Vcp.Identity.MongoDB with the new Verto.Vcp.Identity.Pro.MongoDB package and also replace VcpIdentityMongoDbModule usage with VcpIdentityProMongoDbModule in your module's [DependsOn] attribute.

Other Changes

  • Find modelBuilder.ConfigureIdentity() and change by modelBuilder.ConfigureIdentityPro() in your EF Core project.
  • If you've used IdentityDbContext, use IdentityProDbContext instead.

Blazor UI

Blazor server support comes with this release and we've created separate WebAssembly and Server packages for the modules.

So, if you are using Blazor WebAssembly UI, please make the following changes in your Blazor project;

  • Identity Module: Use Verto.Vcp.Identity.Pro.Blazor.WebAssembly NuGet package instead of Verto.Vcp.Identity.Pro.Blazor package. Also, change VcpIdentityProBlazorModule usage to VcpIdentityProBlazorWebAssemblyModule in the [DependsOn] attribute on your module class.
  • Audit Logging Module: Use Verto.Vcp.AuditLogging.Blazor.WebAssembly NuGet package instead of Verto.Vcp.AuditLogging.Blazor package. Also, change VcpAuditLoggingBlazorModule usage to VcpAuditLoggingBlazorWebAssemblyModule in the [DependsOn] attribute on your module class.
  • Text Template Management Module: Use Verto.Vcp.TextTemplateManagement.Blazor.WebAssembly NuGet package instead of Verto.Vcp.TextTemplateManagement.Blazor package. Also, change TextTemplateManagementBlazorModule usage to TextTemplateManagementBlazorWebAssemblyModule in the [DependsOn] attribute on your module class.
  • Identity Server Module: Use Verto.Vcp.IdentityServer.Blazor.WebAssembly NuGet package instead of Verto.Vcp.IdentityServer.Blazor package. Also, change VcpIdentityServerBlazorModule usage to VcpIdentityServerBlazorWebAssemblyModule in the [DependsOn] attribute on your module class.
  • Language Management Module: Use Verto.Vcp.LanguageManagement.Blazor.WebAssembly NuGet package instead of Verto.Vcp.LanguageManagement.Blazor package. Also, change LanguageManagementBlazorModule usage to LanguageManagementBlazorWebAssemblyModule in the [DependsOn] attribute on your module class.
  • SaaS Module (host): Use Verto.Saas.Host.Blazor.WebAssembly NuGet package instead of Verto.Saas.Host.Blazor package. Also, change SaasHostBlazorModule usage to SaasHostBlazorWebAssemblyModule in the [DependsOn] attribute on your module class.
  • SaaS Module (tenant): Use Verto.Saas.Tenant.Blazor.WebAssembly NuGet package instead of Verto.Saas.Tenant.Blazor package. Also, change SaasTenantBlazorModule usage to SaasTenantBlazorWebAssemblyModule in the [DependsOn] attribute on your module class.
  • File Management Module: Use Verto.FileManagement.Blazor.WebAssembly NuGet package instead of Verto.FileManagement.Blazor package. Also, change FileManagementBlazorModule usage to FileManagementBlazorWebAssemblyModule in the [DependsOn] attribute on your module class.

Resource Reference Changes

Open <YourProjectName>BundleContributor.cs and replace context.Add("main.css"); to context.Add("main.css", true);

Open appsettings.json and add the following:

"VcpCli": {
    "Bundle": {
      "Mode": "BundleAndMinify", /* Options: None, Bundle, BundleAndMinify */
      "Name": "global",
      "Parameters": {
        "FermionTheme.Style": "Style6", /* Options: Style1, Style2... Style6 */
        "FermionTheme.ChangeStyleDynamically": "true"
      }
    }
  }

Then run vcp bundle command in the blazor folder to update resource references.

Angular UI

  • AccountConfigModule: AccountConfigModule has been deprecated. It will be removed in v5.0. Import AccountAdminConfigModule instead as shown below:
// app.module.ts

import { AccountAdminConfigModule } from '@verto/vcp.ng.account/admin/config';

@NgModule({
  //...
  imports: [
    //...
    AccountAdminConfigModule.forRoot(),
    //...
  ]
})
export class AppModule {}
  • CommercialUiConfigModule: CommercialUiConfigModule has been created to make CommercialUIModule lazy-loadable. The module will also provide some benefits for the configuration. Import it to the app.module.ts as shown below:
import { CommercialUiConfigModule } from '@verto/vcp.commercial.ng.ui/config';

@NgModule({
  //...
  imports: [
    //...
    CommercialUiConfigModule.forRoot(),
    //...other vcp config modules
  ]
})
export class AppModule {}
In this document