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. Useapp.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.WebVcpRouterOptions
-> moved to Verto.Vcp.AspNetCore.Components.Web.Theming.RoutingVcpToolbarOptions
andIToolbarContributor
-> moved to Verto.Vcp.AspNetCore.Components.Web.Theming.ToolbarsIVcpUtilsService
-> moved to Verto.Vcp.AspNetCore.Components.WebPageHeader
-> moved toVerto.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 ofVerto.Vcp.Identity.Blazor
package. Also, changeVcpIdentityBlazorModule
usage toVcpIdentityBlazorWebAssemblyModule
in the[DependsOn]
attribute on your module class. - Use
Verto.Vcp.TenantManagement.Blazor.WebAssembly
NuGet package instead ofVerto.Vcp.TenantManagement.Blazor
package. Also, changeVcpTenantManagementBlazorModule
usage toVcpTenantManagementBlazorWebAssemblyModule
in the[DependsOn]
attribute on your module class. - Use
Verto.Vcp.PermissionManagement.Blazor.WebAssembly
NuGet package instead ofVerto.Vcp.PermissionManagement.Blazor
package. Also, changeVcpPermissionManagementBlazorModule
usage toVcpPermissionManagementBlazorWebAssemblyModule
in the[DependsOn]
attribute on your module class. - Use
Verto.Vcp.SettingManagement.Blazor.WebAssembly
NuGet package instead ofVerto.Vcp.SettingManagement.Blazor
package. Also, changeVcpSettingManagementBlazorModule
usage toVcpSettingManagementBlazorWebAssemblyModule
in the[DependsOn]
attribute on your module class. - Use
Verto.Vcp.FeatureManagement.Blazor.WebAssembly
NuGet package instead ofVerto.Vcp.FeatureManagement.Blazor
package. Also, changeVcpFeatureManagementBlazorModule
usage toVcpFeatureManagementBlazorWebAssemblyModule
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 theVisible
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 newVerto.Vcp.Identity.Pro.Domain
package and also replaceVcpIdentityDomainModule
usage withVcpIdentityProDomainModule
in your module's[DependsOn]
attribute. - Replace
Verto.Vcp.Identity.Domain.Shared
with the newVerto.Vcp.Identity.Pro.Domain.Shared
package and also replaceVcpIdentityDomainSharedModule
usage withVcpIdentityProDomainSharedModule
in your module's[DependsOn]
attribute. - If you are using EF Core, Replace
Verto.Vcp.Identity.EntityFrameworkCore
with the newVerto.Vcp.Identity.Pro.EntityFrameworkCore
package and also replaceVcpIdentityEntityFrameworkCoreModule
usage withVcpIdentityProEntityFrameworkCoreModule
in your module's[DependsOn]
attribute. - If you are using MongoDB, Replace
Verto.Vcp.Identity.MongoDB
with the newVerto.Vcp.Identity.Pro.MongoDB
package and also replaceVcpIdentityMongoDbModule
usage withVcpIdentityProMongoDbModule
in your module's[DependsOn]
attribute.
Other Changes
- Find
modelBuilder.ConfigureIdentity()
and change bymodelBuilder.ConfigureIdentityPro()
in your EF Core project. - If you've used
IdentityDbContext
, useIdentityProDbContext
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 ofVerto.Vcp.Identity.Pro.Blazor
package. Also, changeVcpIdentityProBlazorModule
usage toVcpIdentityProBlazorWebAssemblyModule
in the[DependsOn]
attribute on your module class. - Audit Logging Module: Use
Verto.Vcp.AuditLogging.Blazor.WebAssembly
NuGet package instead ofVerto.Vcp.AuditLogging.Blazor
package. Also, changeVcpAuditLoggingBlazorModule
usage toVcpAuditLoggingBlazorWebAssemblyModule
in the[DependsOn]
attribute on your module class. - Text Template Management Module: Use
Verto.Vcp.TextTemplateManagement.Blazor.WebAssembly
NuGet package instead ofVerto.Vcp.TextTemplateManagement.Blazor
package. Also, changeTextTemplateManagementBlazorModule
usage toTextTemplateManagementBlazorWebAssemblyModule
in the[DependsOn]
attribute on your module class. - Identity Server Module: Use
Verto.Vcp.IdentityServer.Blazor.WebAssembly
NuGet package instead ofVerto.Vcp.IdentityServer.Blazor
package. Also, changeVcpIdentityServerBlazorModule
usage toVcpIdentityServerBlazorWebAssemblyModule
in the[DependsOn]
attribute on your module class. - Language Management Module: Use
Verto.Vcp.LanguageManagement.Blazor.WebAssembly
NuGet package instead ofVerto.Vcp.LanguageManagement.Blazor
package. Also, changeLanguageManagementBlazorModule
usage toLanguageManagementBlazorWebAssemblyModule
in the[DependsOn]
attribute on your module class. - SaaS Module (host): Use
Verto.Saas.Host.Blazor.WebAssembly
NuGet package instead ofVerto.Saas.Host.Blazor
package. Also, changeSaasHostBlazorModule
usage toSaasHostBlazorWebAssemblyModule
in the[DependsOn]
attribute on your module class. - SaaS Module (tenant): Use
Verto.Saas.Tenant.Blazor.WebAssembly
NuGet package instead ofVerto.Saas.Tenant.Blazor
package. Also, changeSaasTenantBlazorModule
usage toSaasTenantBlazorWebAssemblyModule
in the[DependsOn]
attribute on your module class. - File Management Module: Use
Verto.FileManagement.Blazor.WebAssembly
NuGet package instead ofVerto.FileManagement.Blazor
package. Also, changeFileManagementBlazorModule
usage toFileManagementBlazorWebAssemblyModule
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. ImportAccountAdminConfigModule
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 makeCommercialUIModule
lazy-loadable. The module will also provide some benefits for the configuration. Import it to theapp.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 {}