From 179f82df0b055d7b82e5148c67ba712812cd751b Mon Sep 17 00:00:00 2001 From: Backiaraj Date: Fri, 17 Oct 2025 18:56:41 +0530 Subject: [PATCH 1/9] Updated the Blazor common UG documentation --- .../mac-installer/how-to-download.md | 52 +++++----- .../offline-installer/how-to-download.md | 58 ++++++------ .../offline-installer/how-to-install.md | 76 +++++++-------- .../web-installer/how-to-download.md | 56 +++++------ .../web-installer/how-to-install.md | 94 +++++++++---------- 5 files changed, 168 insertions(+), 168 deletions(-) diff --git a/blazor/installation/mac-installer/how-to-download.md b/blazor/installation/mac-installer/how-to-download.md index 51286dc7c9..9f9de29305 100644 --- a/blazor/installation/mac-installer/how-to-download.md +++ b/blazor/installation/mac-installer/how-to-download.md @@ -1,73 +1,73 @@ --- layout: post -title: Downloading Syncfusion Blazor Mac installer - Syncfusion -description: Learn here about the how to download Syncfusion Blazor mac installer packages from syncfusion website. +title: Download the Syncfusion Blazor Mac installer - Syncfusion +description: Learn here about how to download the Syncfusion Blazor Mac installer for trial or licensed use, including Start trials and License & Downloads options. platform: Blazor -component: Common +control: Common documentation: ug --- -# Downloading Syncfusion® Blazor Mac installer +# Download the Syncfusion® Blazor Mac installer -Syncfusion® provides Blazor Mac installer for both evaluation and paid customers. You can either download the licensed installer or try our trial installer depending on your license. +Syncfusion® provides a Blazor Mac installer for both evaluation and paid customers. Download options depend on the account status: trial or licensed. * Trial Installer * Licensed Installer -## Download the Trial Version +## Download the trial version -1. You can evaluate our 30-day free trial by visiting the [Download Free Trial](https://www.syncfusion.com/downloads) page and select the Blazor platform. +1. Visit the [Download Free Trial](https://www.syncfusion.com/downloads) page and select the Blazor platform. 2. After completing the required form or logging in with your registered Syncfusion® account, you can download the Blazor trial installer from the confirmation page. (as shown in below screenshot.) - ![Trial Confirmation](images/blazor_mac_trial.PNG) + ![Trial confirmation page showing Blazor Mac installer download](images/blazor_mac_trial.PNG) 3. With a trial license, only the latest version’s trial installer can be downloaded. -4. Unlock key is not required to install the Syncfusion® Blazor Mac trial installer. +4. An unlock key is not required to install the Blazor Mac trial installer. -5. Before the trial expires, you can download the trial installer at any time from your registered account’s [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page (as shown in below screenshot.) +5. Before the trial expires, download the trial installer at any time from the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page. - ![Start Trial download](images/start-trial-download-installer.png) + ![Trials & Downloads page with Download button for the Blazor Mac installer](images/start-trial-download-installer.png) 6. Click the More Download Options (element 2 in the above screenshot) button to get the Essential Studio® Blazor Offline trial installer which is available in DMG format. ![Trial Downlaod Offline Installer](images/blazor_mac.png) -### Start Trials if using components through NuGet.org +### Start trials if using components through NuGet.org -You should initiate an evaluation if you have already obtained our components through [NuGet.org](https://www.nuget.org/packages?q=syncfusion) +Start an evaluation if components were obtained through [NuGet.org](https://www.nuget.org/packages?q=syncfusion). -1. You can start your 30-day free trial for Blazor from the [Start Trial](https://www.syncfusion.com/account/manage-trials/start-trials) page from your account. +1. Start a 30‑day Blazor trial from the [Start trials](https://www.syncfusion.com/account/manage-trials/start-trials) page. - ![Trial Download](images/start-trial-download.PNG) + ![Start trials page for Blazor](images/start-trial-download.PNG) 2. To access this page, you must sign up/log in with your Syncfusion® account. -3. Begin your trial by selecting the Blazor product. +3. Begin the trial by selecting the Blazor product. - N> If you’ve already used the trial products and they haven’t expired, you won’t be able to start the trial for the same product again. + N> If an existing Blazor trial is still active, a new trial for the same product cannot be started. -4. After you’ve started the trial, go to the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page to get the latest version trial installer. You can generate the [unlock key](https://support.syncfusion.com/kb/article/7053/how-to-generate-unlock-key-for-essentials-studio-products) and [license key](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-generate) here at any time before the trial period expires. (as shown in below screenshot.) +4. After starting the trial, go to [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) to get the latest trial installer. You can generate the [unlock key](https://support.syncfusion.com/kb/article/7053/how-to-generate-unlock-key-for-essentials-studio-products) and [license key](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-generate) here at any time before the trial period expires. (as shown in below screenshot) - ![Start Trial download](images/start-trial-download-installer.png) + ![Trials & Downloads page showing trial installer and links to generate license key](images/start-trial-download-installer.png) 5. You can find your current active trial products on the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page. -## Download the License Version +## Download the licensed version -1. Syncfusion® licensed products will be available in the [License & Downloads](https://www.syncfusion.com/account/downloads) page under your registered Syncfusion® account. +1. Licensed products are available from the [License & Downloads](https://www.syncfusion.com/account/downloads) page in the Syncfusion® account. 2. You can view all the licenses (both active and expired) associated with your account. -3. You can download Blazor Mac licensed installer by going to More Downloads Options (element 3 in the screenshot below). +3. Select **More download options** to download the Blazor Mac licensed installer. - ![License Download Installer](images/start-license-download-installer.png) + ![License & Downloads page showing More download options for the Blazor Mac installer](images/start-license-download-installer.png) -4. Unlock key is not required to install the Syncfusion® Blazor Mac trial installer. +4. An unlock key is not required to install the Blazor Mac licensed installer. -5. For Mac OS, DMG formats is available for download. +5. For macOS, the installer is available in DMG format. ![License Download Installer](images/blazor_mac.png) -You can also refer to the [Blazor Mac installation](https://blazor.syncfusion.com/documentation/installation/mac-installer/how-to-install) link for step-by-step installation guidelines. +For step-by-step installation, see [Blazor Mac installation](https://blazor.syncfusion.com/documentation/installation/mac-installer/how-to-install). diff --git a/blazor/installation/offline-installer/how-to-download.md b/blazor/installation/offline-installer/how-to-download.md index f840b7ca2d..c3461b22e7 100644 --- a/blazor/installation/offline-installer/how-to-download.md +++ b/blazor/installation/offline-installer/how-to-download.md @@ -1,78 +1,78 @@ --- layout: post -title: Downloading Syncfusion Blazor installer - Syncfusion -description: Learn here about the how to download Syncfusion Blazor offline installer from our syncfusion website. +title: Download the Syncfusion Blazor offline installer | Syncfusion +description: Learn here about how to download the Syncfusion Blazor offline installer for trial or licensed use, including Start trials and License & Downloads options. platform: Blazor -component: Common +control: Common documentation: ug --- -# Downloading Syncfusion® Blazor offline installer +# Download the Syncfusion® Blazor offline installer -The Syncfusion® Blazor offline installer can be downloaded from the [Syncfusion](https://www.syncfusion.com/blazor-components) website. You can either download the licensed installer or try our trial installer depending on your license. +Download the offline installer from the Syncfusion® website. Download options depend on the account status: trial or licensed. * Trial Installer * Licensed Installer -## Download the Trial Version +## Download the trial version -Our 30-day trial can be downloaded in two ways. +A 30‑day trial can be downloaded in two ways. * Download Free Trial Setup * Start Trials if using components through [NuGet.org](https://www.nuget.org/packages?q=syncfusion) -### Download Free Trial Setup +### Download the free trial setup -1. You can evaluate our 30-day free trial by visiting the [Download Free Trial](https://www.syncfusion.com/downloads) page and select the Blazor platform. +1. Visit the [Download Free Trial](https://www.syncfusion.com/downloads) page and select the Blazor platform. -2. After completing the required form or logging in with your registered Syncfusion® account, you can download the Blazor trial installer from the confirmation page. (as shown in below screenshot.) +2. Complete the form or sign in with a registered Syncfusion® account to download the Blazor trial installer from the confirmation page. - ![Trial Confirmation](images/blazor_windows.PNG) + ![Trial confirmation page showing Blazor offline installer download](images/blazor_windows.PNG) 3. With a trial license, only the latest version’s trial installer can be downloaded. -4. After downloading, the Syncfusion® Blazor trial installer can be unlocked using either the trial unlock key or the Syncfusion® registered login credential. More information on generating an unlock key can be found in [this](https://www.syncfusion.com/kb/8069/how-to-generate-unlock-key-for-essentials-studio-products) article. +4. After downloading, unlock the installer by using either the trial unlock key or by signing in with registered Syncfusion credentials. See [How to generate an unlock key](https://www.syncfusion.com/kb/8069/how-to-generate-unlock-key-for-essentials-studio-products) for more information. -5. Before the trial expires, you can download the trial installer at any time from your registered account’s [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page (as shown in below screenshot.) +5. Before the trial expires, download the trial installer at any time from the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page. - ![Start Trial download](images/start-trial-download-installer.png) + ![Trials & Downloads page with Download button for the Blazor offline installer](images/start-trial-download-installer.png) -6. Click the More Download Options (element 2 in the above screenshot) button to get the Essential Studio® Blazor Offline trial installer which is available in EXE and ZIP format. +6. Select **More download options** (element 2 in the above screenshot) to get the Essential Studio® Blazor offline trial installer in EXE or ZIP format. ![Trial Downlaod Offline Installer](images/start-trial-download-offline-installer.PNG) -### Start Trials if using components through NuGet.org +### Start trials if using components through NuGet.org -You should initiate an evaluation if you have already obtained our components through [NuGet.org](https://www.nuget.org/packages?q=syncfusion) +Start an evaluation if components were obtained through [NuGet.org](https://www.nuget.org/packages?q=syncfusion). -1. You can start your 30-day free trial for Blazor from the [Start Trial](https://www.syncfusion.com/account/manage-trials/start-trials) page from your account. +1. Start a 30‑day Blazor trial from the [Start trials](https://www.syncfusion.com/account/manage-trials/start-trials) page. - ![Trial Download](images/start-trial-download.PNG) + ![Start trials page for Blazor](images/start-trial-download.PNG) 2. To access this page, you must sign up/log in with your Syncfusion® account. -3. Begin your trial by selecting the Blazor product. +3. Begin the trial by selecting the Blazor product. - N> If you’ve already used the trial products and they haven’t expired, you won’t be able to start the trial for the same product again. + N> If an existing Blazor trial is still active, a new trial for the same product cannot be started. -4. After you’ve started the trial, go to the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page to get the latest version trial installer. You can generate the [unlock key](https://www.syncfusion.com/kb/8069/how-to-generate-unlock-key-for-essentials-studio-products) and [license key](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-generate) here at any time before the trial period expires. (as shown in below screenshot.) +4. After starting the trial, go to [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page to get the latest trial installer. Generate the installer [unlock key](https://www.syncfusion.com/kb/8069/how-to-generate-unlock-key-for-essentials-studio-products) and the project [license key](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-generate) before the trial period expires. - ![Start Trial download](images/start-trial-download-installer.png) + ![Trials & Downloads page showing trial installer and key generation options](images/start-trial-download-installer.png) 5. You can find your current active trial products on the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page. -## Download the License Version +## Download the licensed version -1. Syncfusion® licensed products will be available in the [License & Downloads](https://www.syncfusion.com/account/downloads) page under your registered Syncfusion® account. +1. Licensed products are available from the [License & Downloads](https://www.syncfusion.com/account/downloads) page in the Syncfusion account. 2. You can view all the licenses (both active and expired) associated with your account. -3. You can download Blazor licensed offline installer by going to More Downloads Options (element 3 in the screenshot below). +3. Select **More download options** to download the Blazor licensed offline installer. - ![License Download Installer](images/start-license-download-installer.png) + ![License & Downloads page showing More download options for the Blazor offline installer](images/start-license-download-installer.png) -4. For Windows OS, EXE and Zip formats are available for download. They are both Offline Installers. +4. For Windows, EXE and ZIP formats are available for download. Both are offline installers. ![License Download Installer](images/start-trial-download-offline-installer.png) -You can also refer to the [Offline installer](https://blazor.syncfusion.com/documentation/installation/offline-installer/how-to-install) link for step-by-step installation guidelines. +For step-by-step installation, see [Offline installer](https://blazor.syncfusion.com/documentation/installation/offline-installer/how-to-install). diff --git a/blazor/installation/offline-installer/how-to-install.md b/blazor/installation/offline-installer/how-to-install.md index a601c8983d..cc275f52fa 100644 --- a/blazor/installation/offline-installer/how-to-install.md +++ b/blazor/installation/offline-installer/how-to-install.md @@ -1,92 +1,92 @@ --- layout: post -title: Installing Syncfusion Blazor installer - Syncfusion -description: Learn here about the how to install Syncfusion Blazor offline installer after downloading from our syncfusion website. +title: Install the Syncfusion Blazor offline installer | Syncfusion +description: Learn how to install the Syncfusion Blazor offline installer (EXE or ZIP), unlock with a key or account login, and perform silent installs and uninstalls. platform: Blazor -component: Common +control: Common documentation: ug --- -# Installing Syncfusion® Blazor offline installer +# Install the Syncfusion® Blazor offline installer -## Installing with UI +## Install with the user interface -The steps below show how to install the Essential Studio® Blazor installer. +The steps below show how to install the Essential Studio® Blazor offline installer. -1. Open the Syncfusion® Blazor offline installer file from downloaded location by double-clicking it. The Installer Wizard automatically opens and extracts the package +1. Open the Syncfusion® Blazor offline installer file(.exe) from the download location by double‑clicking it. The installer wizard opens and extracts the package. - ![Web Offline Installer Setup wizard](images/webofflineinstaller-1.png) + ![Offline installer setup extracting package](images/webofflineinstaller-1.png) - N> The Installer wizard extracts the syncfusionessentialblazor_(version).exe dialog, which displays the package’s unzip operation. + N> The installer extracts syncfusionessentialblazor_(version).exe and displays the extraction progress(unzip operation). -2. To unlock the Syncfusion® offline installer, you have two options: +2. To unlock the offline installer, choose one of the following options: * *Login To Install* * *Use Unlock Key* - **Login To Install:** + **Login to install:** - You must enter your Syncfusion® email address and password. If you don’t already have a Syncfusion® account, you can sign up for one by clicking "**Create an account**". If you have forgotten your password, click on "**Forgot Password**" to create a new one. Once you’ve entered your Syncfusion® email and password, click Next. + Enter the Syncfusion® account email address and password. If you don’t already have a Syncfusion® account, you can sign up for one by clicking "**Create an account**". If you have forgotten your password, click on "**Forgot Password**" to create a new one. Once you’ve entered your Syncfusion® email and password, click Next. - ![Web Offline Installer LoginToInstall Wizard](images/webofflineinstaller-2.png) + ![Offline installer Login to install wizard](images/webofflineinstaller-2.png) - **Use Unlock Key:** + **Use unlock key:** - Unlock keys are used to unlock the Syncfusion® offline installer, and they are platform and version specific. You should use either Syncfusion® licensed or trial Unlock key to unlock Syncfusion® Blazor installer. + Unlock keys unlock the Syncfusion® offline installer, and they are platform and version specific. You should use either Syncfusion® licensed or trial Unlock key to unlock Syncfusion® Blazor installer. - The trial unlock key is only valid for 30 days, and the installer will not accept an expired trial key. + The trial unlock key is valid for 30 days; expired keys are not accepted. To learn how to generate an unlock key for both trial and licensed products, see [this](https://www.syncfusion.com/kb/2326) Knowledge Base article. - ![Web Offline Installer UseUnlockKey Wizard](images/webofflineinstaller-3.png) + ![Offline installer Use unlock key wizard](images/webofflineinstaller-3.png) -3. After reading the License Terms and Privacy Policy, check the "**I agree to the License Terms and Privacy Policy**" check box. Click the Next button. +3. Read the License Terms and Privacy Policy, then select **I agree to the License Terms and Privacy Policy**. Select **Next**. -4. Change the install and sample locations here. You can also change the Additional settings. Click Next/Install to install with the default settings. +4. Change the install and sample locations as needed. Adjust additional settings if required. Select **Next** or **Install** to continue with defaults. - ![Web Offline Installer Settings Wizard](images/webofflineinstaller-4.png) + ![Offline installer Settings wizard with install locations and options](images/webofflineinstaller-4.png) - ***Additional Settings*** + ***Additional settings*** - * Select the **Install Demos** check box to install Syncfusion® samples, or leave the check box unchecked, if you do not want to install Syncfusion® samples. + * Select **Install demos** to install Syncfusion® samples, or clear it to skip sample installation. - * Select the **Configure Syncfusion® Extensions controls in Visual Studio** checkbox to configure the Syncfusion® Extensions in Visual Studio or clear this check box when you do not want to configure the Syncfusion® Extensions in Visual Studio. + * Select **Configure Syncfusion Extensions controls in Visual Studio** to configure extensions, or clear it to skip configuration. - * Check the **Create Desktop Shortcut** checkbox to add a desktop shortcut for Syncfusion® Control Panel. + * Select **Create Desktop Shortcut** to add a shortcut for Syncfusion® Control Panel. - * Check the **Create Start Menu Shortcut** checkbox to add a shortcut to the start menu for Syncfusion® Control Panel. + * Select **Create Start menu shortcut** to add a shortcut to the Start menu entry for Syncfusion® Control Panel. -5. If any previous versions of the current product is installed, the Uninstall Previous Version(s) wizard will be opened. Select **Uninstall** checkbox to uninstall the previous versions and then click the Proceed button. +5. If previous versions of the current product is installed, the Uninstall previous versions wizard opens. Select **Uninstall** to remove the previous versions, then select **Proceed**. - ![Web Offline Installer Uninstall Previous Wizard](images/webofflineinstaller-5.png) + ![Offline installer Uninstall previous versions wizard](images/webofflineinstaller-5.png) N> From the 2021 Volume 1 release, Syncfusion® has added the option to uninstall previous versions from 18.1 while installing the new version.

If any version is selected to uninstall, a confirmation screen will appear; if continue is selected, the Progress screen will display the uninstall and install progress, respectively. If none of the versions are chosen to be uninstalled, only the installation progress will be displayed. - **Confirmation Alert:** + **Confirmation alert:** ![Web Offline Installer Confirmation Alert](images/webofflineinstaller-6.png) - **Uninstall Progress:** + **Uninstall progress:** ![Web Offline Installer Uninstall Progress Wizard](images/webofflineinstaller-7.png) - ***Install Progress*** + ***Install progress*** ![Web Offline Installer Progress Wizard](images/webofflineinstaller-8.png) - N> The Completed screen is displayed once the Blazor product is installed. If any version is selected to uninstall, The completed screen will display both install and uninstall status. + N> The Completed screen appears after installation. If versions were uninstalled, it shows both uninstall and install status. ![Web Offline Installer Summary Wizard](images/webofflineinstaller-9.png) -6. After installing, click the **Launch Control Panel** link to open the Syncfusion® Control Panel. +6. After installation, select **Launch Control Panel** to open the Syncfusion® Control Panel. -7. Click the Finish button. Your system has been installed with the Syncfusion® Essential Studio® Blazor product. +7. Select **Finish**. The Syncfusion® Essential Studio® Blazor product is installed. -## Installing in Silent Mode +## Install in silent mode -The Syncfusion® Essential Studio® Blazor Installer supports installation and uninstallation via the command line. +The Syncfusion® Essential Studio® Blazor installer supports installation and uninstallation via the command line. -***Command Line Installation*** +***Command-line installation*** To install through the Command Line in Silent mode, follow the steps below. @@ -100,7 +100,7 @@ To install through the Command Line in Silent mode, follow the steps below. 5. Exit the Wizard. -6. Run Command Prompt in administrator mode and enter the following arguments. +6. Open Command Prompt as administrator and run the installer with arguments: **Arguments:** "installer file path\SyncfusionEssentialStudio(product)_(version).exe" /Install silent /UNLOCKKEY:"(product unlock key)" [/ log "{Log file path}"] [/InstallPath:{Location to install}] [/InstallSamples:{true/false}] [/CreateShortcut:{true/false}] [/ CreateStartMenuShortcut:{true/false}] @@ -112,7 +112,7 @@ To install through the Command Line in Silent mode, follow the steps below. N> x.x.x.x should be replaced with the Essential Studio® version and the Product Unlock Key needs to be replaced with the Unlock Key for that version. -## Command Line Uninstallation +## Command-line uninstallation Syncfusion® Essential® Blazor can be uninstalled silently using the Command Line. diff --git a/blazor/installation/web-installer/how-to-download.md b/blazor/installation/web-installer/how-to-download.md index 08242ceb04..c8a3b5a758 100644 --- a/blazor/installation/web-installer/how-to-download.md +++ b/blazor/installation/web-installer/how-to-download.md @@ -1,78 +1,78 @@ --- layout: post -title: Downloading Syncfusion Blazor web installer - Syncfusion -description: Learn here about the how to download Syncfusion Blazor web installer from our syncfusion website with license. +title: Download the Syncfusion Blazor web installer - Syncfusion +description: Learn how to download the Blazor web installer for trial or licensed use from your Syncfusion account, including links to Start trials and License & Downloads. platform: Blazor -component: Common +control: Common documentation: ug --- -# Downloading Syncfusion® Blazor web installer +# Download the Syncfusion® Blazor web installer -Syncfusion® Blazor web installer can be downloaded from our [Syncfusion](https://www.syncfusion.com/blazor-components) website. You can either download the licensed installer or try our trial installer depending on your license. +Download the Syncfusion® Blazor web installer from the [Syncfusion® website](https://www.syncfusion.com/blazor-components). Download options depend on the account status: trial or licensed. * Trial Installer * Licensed Installer -## Download Free Trial Version +## Download the free trial version -Our 30-day trial can be downloaded in two ways. +A 30‑day trial can be downloaded in two ways. * Download Free Trial Setup * Start Trials if using components through [NuGet.org](https://www.nuget.org/packages?q=syncfusion) -### Download Free Trial Setup +### Download the free trial setup -1. You can evaluate our 30-day free trial by visiting the [Download Free Trial](https://www.syncfusion.com/downloads) page and select the Blazor platform. +1. Visit the [Download Free Trial](https://www.syncfusion.com/downloads) page and select the Blazor platform. 2. After completing the required form or logging in with your registered Syncfusion® account, you can download the Blazor trial installer from the confirmation page. (as shown in below screenshot.) - ![Trial Confirmation](images/blazor-web-trial.png) + ![Trial confirmation page showing the Blazor trial installer download](images/blazor-web-trial.png) -3. After downloading, the Syncfusion® Blazor web installer can be unlocked using Syncfusion® registered login credential. +3. After downloading, unlock the Blazor web installer by signing in with the registered Syncfusion credentials. 4. Before the trial license expires, you can download the blazor installer at any time from your registered account’s [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page (as shown in below screenshot.) -5. Click the Download (element 1 in the screenshot below) button to download the blazor web installer. +5. Click Download to get the Blazor web installer. - ![Trial Downlaod Online Installer](images/start-trial-download-installer-1.png) + ![Trials & Downloads page with Download button for the Blazor web installer](images/start-trial-download-installer-1.png) -### Start Trials if using components through NuGet.org +### Start trials if using components through NuGet.org -You should initiate an evaluation if you have already obtained our components through [NuGet.org](https://www.nuget.org/packages?q=syncfusion) +Start an evaluation if components were obtained through [NuGet.org](https://www.nuget.org/packages?q=syncfusion). -1. You can start your 30-day free trial for Blazor from the [Start Trial](https://www.syncfusion.com/account/manage-trials/start-trials) page from your account. +1. Start a 30‑day Blazor trial from the [Start trials](https://www.syncfusion.com/account/manage-trials/start-trials) page. - ![Trial Download](images/start-trial-download.png) + ![Start trials page for Blazor](images/start-trial-download.png) 2. To access this page, you must sign up/log in with your Syncfusion® account. -3. Begin your trial by selecting the Blazor product. +3. Begin the trial by selecting the Blazor product. - N> If you’ve already used the trial products and they haven’t expired, you won’t be able to start the trial for the same product again. + N> If an existing Blazor trial is still active, a new trial for the same product cannot be started. -4. After you’ve started the trial, go to the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page to get the latest version trial installer. You can generate the [unlock key](https://support.syncfusion.com/kb/article/7053/how-to-generate-unlock-key-for-essentials-studio-products) and [license key](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-generate) here at any time before the trial period expires. (as shown in below screenshot.) +4. After starting the trial, go to [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) to get the latest trial installer. Generate the installer [unlock key](https://support.syncfusion.com/kb/article/7053/how-to-generate-unlock-key-for-essentials-studio-products) and the project [license key](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-generate) before the trial period expires. - ![Start Trial download](images/start-trial-download-installer.png) + ![Trials & Downloads page showing trial installer and key generation options](images/start-trial-download-installer.png) 5. You can find your current active trial products on the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page. -## Download the Licensed Version +## Download the licensed version -1. Syncfusion® licensed products will be available in the [License & Downloads](https://www.syncfusion.com/account/downloads) page under your registered Syncfusion® account. +1. Licensed products are available from the [License & Downloads](https://www.syncfusion.com/account/downloads) page in the registered Syncfusion® account. 2. You can view all the licenses (both active and expired) associated with your account. -3. Click the Download (element 1 in the screenshot below) button to download the blazor web installer. +3. Click Download to get the Blazor web installer. - ![License Download Installer](images/blazor-license-download-installer.png) + ![License & Downloads page with Download button for the Blazor web installer](images/blazor-license-download-installer.png) 4. Before the license expires, you can download the installer at any time from your registered account’s [License & Downloads](https://www.syncfusion.com/account/downloads) page (See the screenshot below.) - ![License Download Installer](images/blazor-web-installer-license.png) + ![License & Downloads page listing available Blazor installer versions](images/blazor-web-installer-license.png) -5. After downloading, the Syncfusion® Blazor web installer can be unlocked using Syncfusion® registered login credential. +5. After downloading, unlock the web installer by signing in with registered Syncfusion® credentials. N> For Syncfusion® trial and licensed products, there is no separate web installer. Based on your account license, Syncfusion® trial or licensed products will be installed via web installer. -You can also refer to the [web installer](https://blazor.syncfusion.com/documentation/installation/web-installer/how-to-install) links for step-by-step installation guidelines. +For step-by-step installation, see Web installer: https://blazor.syncfusion.com/documentation/installation/web-installer/how-to-install diff --git a/blazor/installation/web-installer/how-to-install.md b/blazor/installation/web-installer/how-to-install.md index b243e85ede..cc76283dcc 100644 --- a/blazor/installation/web-installer/how-to-install.md +++ b/blazor/installation/web-installer/how-to-install.md @@ -1,89 +1,89 @@ --- layout: post -title: Installing Syncfusion Blazor web installer - Syncfusion -description: Learn here about how to install Syncfusion Blazor web installer after downloading from our Syncfusion website. +title: Install the Syncfusion Blazor web installer | Syncfusion +description: Learn here about how to install the Syncfusion Blazor web installer, configure products, and manage the uninstall options. Explore here to more details. platform: Blazor -component: Common +control: Common documentation: ug --- -# Installing Syncfusion® Blazor web installer +# Install the Syncfusion® Blazor web installer ## Installation -The steps below show how to install Essential Studio® Blazor Web Installer. +The steps below show how to install the Essential Studio® Blazor web installer. -1. Open the Syncfusion® Essential Studio® Blazor Web Installer file from downloaded location by double-clicking it. The Installer Wizard automatically opens and extracts the package. +1. Open the Syncfusion® Essential Studio® Blazor web installer (.exe) from the download location by double‑clicking it. The installer wizard opens and extracts the package. - ![Web Installer Setup](images/webinstaller-1.png) + ![Web installer setup extracting package](images/webinstaller-1.png) - N> The installer wizard extracts the syncfusionessentialblazorwebinstaller_{version}.exe dialog, which displays the package’s unzip operation. + N> The installer extracts syncfusionessentialblazorwebinstaller_{version}.exe and displays the extraction progress. -2. The Syncfusion® Blazor Web Installer’s ***welcome wizard*** will be displayed. Click the Next button. +2. The Syncfusion® Blazor Web Installer’s ***welcome wizard*** will be displayed. Click **Next** button. ![Web Installer welcome wizard](images/webinstaller-2.png) -3. The ***Platform Selection Wizard*** will appear. From the **Available** tab, select the products to be installed. Select the **Install All** checkbox to install all products. +3. The ***Platform selection wizard*** appears. On the **Available** tab, select the products to install. To install all products, click **Install All**. ***Available*** - ![Web Installer Available Tab](images/webinstaller-3.png) + ![Platform selection wizard Available tab](images/webinstaller-3.png) - If you have multiple products installed in the same version, they will be listed under the **Installed** tab. You can also select which products to uninstall from the same version. Click the Next button. + If multiple products are already installed for the same version, they are listed under the **Installed** tab. You can also select products to uninstall from that version. Click **Next**. ***Installed*** - ![Web Installer Installed Tab](images/webinstaller-4.png) + ![Platform selection wizard Installed tab](images/webinstaller-4.png) - I> If the required software for the selected product isn’t already installed, the **Additional Software Required** alert will appear. You can, however, continue the installation and install the necessary software later. + I> If required software for a selected product is missing, an **Additional Software Required** alert appears. You can, however, continue the installation and install the necessary software later. ***Required Software*** ![Web Installer Required Software Alert](images/webinstaller-5.png) -4. If previous version(s) for the selected products are installed, the ***Uninstall previous version wizard*** will be displayed. You can see the list of previously installed versions for the products you’ve chosen here. To remove all versions, check the **Uninstall All** checkbox. Click the Next button. +4. If previous versions of selected products are detected, the Uninstall previous versions wizard is displayed. Review the list and select **Uninstall All** to remove all prior versions. Click **Next**. ![Web Installer Uninstall Previous Wizard](images/webinstaller-6.png) N> From the 2021 Volume 1 release, Syncfusion® has provided option to uninstall the previous versions from 18.1 while installing the new version. -5. Pop up screen will be displayed to get the confirmation to uninstall selected previous versions. +5. A confirmation dialog is shown to uninstall the selected previous versions. ![Web Installer Uninstall Previous confirmation](images/webinstaller-7.png) -6. The ***Confirmation Wizard*** will appear with the list of products to be installed/uninstalled. You can view and modify the list of products that will be installed and uninstalled from this page. +6. The ***Confirmation wizard*** lists products to be installed or uninstalled. Review and modify the list as needed. ![Web Installer Product install/uninstall list](images/webinstaller-8.png) - N> By clicking the **Download Size and Installation** Size links, you can determine the approximate size of the download and installation + N> Click the **Download size** and **Installation size** links to view approximate sizes. -7. The ***Configuration Wizard*** will appear. You can change the Download, Install, and Demos locations from here. You can also change the Additional settings on a product-by-product basis. Click Next to install with the default settings. +7. The ***Configuration Wizard*** will appear. You can change the Download, Install, and Demos locations from here. You can also change the Additional settings on a product-by-product basis. Click **Next** to install with the default settings. ![Web Installer Configuration Wizard](images/webinstaller-9.png) ***Additional settings*** - * Select the **Install Demos** check box to install Syncfusion® samples, or leave the check box unchecked, if you do not want to install Syncfusion® samples. + * Select **Install demos** to install Syncfusion samples, or clear it to skip sample installation. - * Select the **Configure Syncfusion® Extensions controls in Visual Studio** checkbox to configure the Syncfusion® Extensions in Visual Studio or clear this check box when you do not want to configure the Syncfusion® Extensions in Visual Studio. + * Select **Configure Syncfusion extensions in Visual Studio** to configure extensions, or clear it to skip configuration. - * Check the **Create Desktop Shortcut** checkbox to add a desktop shortcut for Syncfusion® Control Panel. + * Select **Create Desktop Shortcut** to add a shortcut for Syncfusion® Control Panel. - * Check the **Create Start Menu Shortcut** checkbox to add a shortcut to the start menu for Syncfusion® Control Panel. + * Select **Create Start Menu Shortcut** to add a shortcut to the Start menu entry for Syncfusion® Control Panel. -8. After reading the License Terms and Conditions, check the **I agree to the License Terms and Privacy Policy** check box. Click the Next button. +8. Read the License Terms and Privacy Policy, then select **I agree to the License Terms and Privacy Policy**. Click **Next**. -9. The login wizard will appear. You must enter your Syncfusion® email address and password. If you do not already have a Syncfusion® account, you can create one by clicking on **Create an Account**. If you have forgotten your password, click **Forgot Password** to create a new one. Click the Install button. +9. The Login wizard appears. Enter the Syncfusion account email and password. To create an account, select **Create an account**. To reset a password, select **Forgot password**. Click **Install**. ![Web Installer Login Wizard](images/webinstaller-10.png) - I> The products you have chosen will be installed based on your Syncfusion® License (Trial or Licensed). + I> Products are installed based on your syncfusion® license (trial or licensed). -10. The download and installation/uninstallation progress will be displayed as shown below. - ![Web Installer Installation Wizard](images/webinstaller-11.png) +10. The download, installation, and uninstallation progress is displayed. + ![Installation progress showing download and install status](images/webinstaller-11.png) To open the Syncfusion® Control Panel, click **Launch Control Panel**. -11. When the installation is finished, the ***Summary wizard*** will appear. Here you can see the list of products that have been installed successfully and those that have failed. To close the Summary wizard, click Finish. +11. When the installation is finished, the ***Summary wizard*** will appear. Here you can see the list of products that have been installed successfully and those that have failed. To close the Summary wizard, click **Finish**. ![Web Installer Installation Summary](images/webinstaller-12.png) @@ -93,21 +93,21 @@ The steps below show how to install Essential Studio& ## Uninstallation -Syncfusion® Blazor installer can be uninstalled in two ways. +Syncfusion® Blazor can be uninstalled in two ways. -* Uninstall the Blazor using the Syncfusion® Blazor web installer +* Uninstall using the Syncfusion® Blazor web installer -* Uninstall the Blazor from Windows Control Panel +* Uninstall from Windows Control Panel -Follow either one of the option below to uninstall Syncfusion® Essential Studio® Blazor installer, +Follow one of the options below to uninstall the Syncfusion® Essential Studio® Blazor installer. -**Option 1:** ***Uninstall the Blazor using the Syncfusion® Blazor web installer*** +**Option 1:** Uninstall using the Syncfusion® Blazor web installer Syncfusion® provides the option to uninstall products of the same version directly from the Web Installer application. Open the Syncfusion® Essential Studio® Blazor Online Installer file from downloaded location by double-clicking it. Select the products to be uninstalled from the list, and Web Installer will uninstall them one by one. ![Web Installer Installed Products Uninstall](images/webinstaller-uninstall-2.png) -**Option 2:** ***Uninstall the Blazor from Windows Control Panel*** +**Option 2:** Uninstall from Windows Control Panel You can uninstall all the installed products by selecting the **Syncfusion® Essential Studio® {version}** entry (element 1 in the below screenshot) from the Windows control panel, or you can uninstall Blazor alone by selecting the **Syncfusion® Essential Studio® for Blazor {version}** entry (element 2 in the below screenshot) from the Windows control panel. @@ -115,54 +115,54 @@ You can uninstall all the installed products by selecting the **Syncfusion If the **Syncfusion® Essential Studio® for Blazor {version}** entry is selected from the Windows control panel, the Syncfusion® Essential Studio® Blazor alone will be removed and the below default MSI uninstallation window will be displayed. -1. The Syncfusion® Blazor Web Installer’s ***welcome wizard*** will be displayed. Click the Next button +1. The Blazor web installer **Welcome wizard** is displayed. Click **Next**. ![Web Installer welcome wizard](images/webinstaller-2.png) -2. The ***Platform Selection Wizard*** will appear. From the **Installed** tab, select the products to be uninstalled. To select all products, check the **Uninstall All** checkbox. Click the Next button. +2. The **Platform selection wizard** appears. On the **Installed** tab, select products to uninstall. To uninstall all, select **Uninstall All**. Click **Next**. ***Installed*** ![Web Installer Installed Products Uninstall](images/webinstaller-uninstall-2.png) - You can also select the products to be installed from the **Available** tab. Click the Next button. + You can also select products to install from the **Available** tab. Click **Next**. ***Available*** ![Web Installer Uninstall Available Tab](images/webinstaller-uninstall-3.png) -3. If any other products are selected for installation, ***Uninstall previous version wizard*** will be displayed with previous version(s) installed for the selected products. Here you can view the list of installed previous versions for the selected products. Select **Uninstall All** checkbox to select all the versions. Click Next. +3. If other products are selected for installation, the ***Uninstall previous versions wizard*** shows any installed previous versions for those products. Select **Uninstall All** to remove all versions. Click **Next**. ![Web Installer Uninstall Previous version Wizard](images/webinstaller-uninstall-4.png) -4. Pop up screen will be displayed to get the confirmation to uninstall selected previous versions. +4. A confirmation dialog is shown to uninstall the selected previous versions. ![Web Installer Uninstall Previous confirmation](images/webinstaller-7.png) -5. The ***Confirmation Wizard*** will appear with the list of products to be installed/uninstalled. Here you can view and modify the list of products that will be installed/uninstalled. +5. The **Confirmation Wizard** lists products to be installed or uninstalled. Review and modify as needed. ![Web Installer Product Install/Uninstall Wizard](images/webinstaller-uninstall-5.png) N> By clicking the **Download Size and Installation** Size links, you can determine the approximate size of the download and installation. -6. The ***Configuration Wizard*** will appear. You can change the Download, Install, and Demos locations from here. You can also change the Additional settings on a product-by-product basis. Click Next to install with the default settings. +6. The ***Configuration Wizard*** will appear. You can change the Download, Install, and Demos locations from here. You can also change the Additional settings on a product-by-product basis. Click **Next** to install with the default settings. ![Web Installer Uninstall Configuration Wizard](images/webinstaller-uninstall-6.png) -7. After reading the License Terms and Conditions, check the **I agree to the License Terms and Privacy Policy** check box. Click the Next button. +7. Read the License Terms and Privacy Policy, then select **I agree to the License Terms and Privacy Policy**. Select **Next**. -8. The ***login wizard*** will appear. You must enter your Syncfusion® email address and password. If you do not already have a Syncfusion® account, you can create one by clicking on **Create an Account**. If you have forgotten your password, click **Forgot Password** to create a new one. Click the Install button. +8. The **Login Wizard** appears. Enter the Syncfusion® account email and password, or select **Create an account** or **Forgot password**. Click **Install**. ![Web Installer Login Wizard](images/webinstaller-10.png) I> The products you have chosen will be installed based on your Syncfusion® License (Trial or Licensed). -9. The download, installation, and uninstallation progresses will be shown. +9. The download, installation, and uninstallation progress is shown. ![Web Installer Uninstallation Wizard](images/webinstaller-uninstall-7.png) -10. When the installation is finished, the ***Summary wizard*** will appear. Here you can see the list of products that have been successfully and unsuccessfully installed/uninstalled. To close the Summary wizard, click Finish. +10. When the installation is finished, the ***Summary wizard*** will appear. Here you can see the list of products that have been successfully and unsuccessfully installed/uninstalled. To close the Summary wizard, click **Finish**. ![Web Installer Uninstallation Summary](images/webinstaller-uninstall-8.png) -* To open the Syncfusion® Control Panel, click **Launch Control Panel**. \ No newline at end of file +* To open the Syncfusion® Control Panel, click **Launch Control Panel**. From 46dc0ae59a41a3f70c2468c2f5730b7caf1fa1e3 Mon Sep 17 00:00:00 2001 From: Backiaraj Date: Tue, 21 Oct 2025 18:52:01 +0530 Subject: [PATCH 2/9] Updated Blazor common UG documentation --- .../common-installation-errors.md | 79 +++++++++--------- blazor/installation/install-nuget-packages.md | 26 +++--- .../linux-installer/how-to-download.md | 74 ++++++++-------- .../linux-installer/how-to-install.md | 32 ++++--- .../mac-installer/how-to-download.md | 6 +- .../mac-installer/how-to-install.md | 69 +++++++-------- .../offline-installer/how-to-download.md | 6 +- .../web-installer/how-to-download.md | 8 +- .../images/webinstaller-uninstall-6.png | Bin 129235 -> 36604 bytes blazor/ui-kit/getting-started.md | 51 +++++------ blazor/ui-kit/overview.md | 19 +++-- 11 files changed, 187 insertions(+), 183 deletions(-) diff --git a/blazor/installation/common-installation-errors.md b/blazor/installation/common-installation-errors.md index 10c52a8911..c7664465ff 100644 --- a/blazor/installation/common-installation-errors.md +++ b/blazor/installation/common-installation-errors.md @@ -1,13 +1,13 @@ --- layout: post -title: Installation Errors in Blazor - Syncfusion -description: Learn here about the common installation errors and solution to those errors in Syncfusion Blazor Components installation. +title: Common installation errors in Blazor | Syncfusion +description: Understand common Syncfusion Blazor installer errors, their causes, and solutions including unlock key issues, license expiration, concurrent installers. platform: Blazor -component: Common +control: Common documentation: ug --- -# Common Installation Errors +# Common installation errors This article describes the most common installation errors, as well as the causes and solutions to those errors. @@ -21,28 +21,28 @@ This article describes the most common installation errors, as well as the cause **Error Message:** Sorry, the provided unlock key is a trial unlock key and cannot be used to unlock the licensed version of our Essential Studio® for Blazor installer. -![Installation Unlock Error](images/installation-error-1.png) +![Unlock key error when using a trial key with the licensed installer](images/installation-error-1.png) -**Reason**
You are attempting to use a Trial unlock key to unlock the licensed installer. +**Reason:**
A trial unlock key is being used with the licensed installer. -**Suggested solution**
Only a licensed unlock key can unlock a licensed installer. So, to unlock the Licensed installer, use the Licensed unlock key. To generate the licensed unlock key, refer to [this](https://support.syncfusion.com/kb/article/2757/how-to-generate-syncfusion-setup-unlock-key-from-syncfusion-support-account) article. +**Suggested solution:** Only a licensed unlock key can unlock a licensed installer. So, to unlock the Licensed installer, use the Licensed unlock key. To generate the licensed unlock key, refer to [this](https://support.syncfusion.com/kb/article/2757/how-to-generate-syncfusion-setup-unlock-key-from-syncfusion-support-account) article. ## License has expired **Error Message:** Your license for Syncfusion® Essential Studio® for Blazor has been expired since {date}. Renew your subscription and try again. -***Online Installer*** +***Online installer*** -![Installation License Expired Error](images/installation-error-2.png) +![License expired message in the web installer](images/installation-error-2.png) -**Reason**
This error message will appear if your license has expired. +**Reason:** This error message will appear if your license has expired. -**Suggested solution**
You can choose from the options listed below. +**Suggested solution:** Choose one of the following options. -1. You can renew your subscription [here](https://www.syncfusion.com/account/my-renewals). -2. You can get a new license [here](https://www.syncfusion.com/sales/products). -3. You can reach out to our sales team by emailing [sales@syncfusion.com](mailto:sales@syncfusion.com). -4. You can also extend the 30-day trial period after your trial license has expired. +1. Renew the subscription [here](https://www.syncfusion.com/account/my-renewals) +2. Purchase a new license [here](https://www.syncfusion.com/sales/products) +3. Contact sales: sales@syncfusion.com +4. If applicable, extend the 30‑day trial period. ## Unable to find a valid license or trial @@ -50,60 +50,61 @@ This article describes the most common installation errors, as well as the cause ***Offline installer*** -![Installation Offline Installer Error](images/installation-error-3.png) +![Account has no valid license or trial in the offline installer](images/installation-error-3.png) ***Online installer*** -![Installation Online Installer Error](images/installation-error-4.png) +![Account has no valid license or trial in the web installer](images/installation-error-4.png) -**Reason**
The following are possible causes of this error: +**Reason:** One of the following is true: -* When your trial period expired -* When you don’t have a license or an active trial -* You are not the license holder of your license -* Your account administrator has not yet assigned you a license. +* The 30‑day trial has expired +* The account has no license or active trial +* The user is not the license holder for the product +* The account administrator has not assigned a license to the user -**Suggested solution**
-1. You can get a new license [here](https://www.syncfusion.com/sales/products). -2. Contact your account administrator. -3. Send an email to [clientrelations@syncfusion.com](mailto:clientrelations@syncfusion.com) to request a license. -4. You can reach out to our sales team by emailing [sales@syncfusion.com](mailto:sales@syncfusion.com). +**Suggested solution:** +1. Purchase a license: https://www.syncfusion.com/sales/products +2. Ask the account administrator to assign a license in Syncfusion account portal +3. Request assistance: clientrelations@syncfusion.com +4. Contact sales: sales@syncfusion.com ## Unable to install because of another installation **Error Message:** Another installation is in progress. You cannot start this installation without completing all other currently active installations. Click cancel to end this installer or retry to attempt after currently active installation completed to install again. -![Installation Error Another MSI Running](images/installation-error-5.png) +![Another installation in progress error dialog](images/installation-error-5.png) + +**Reason:** You are trying to install when another installation is already running in your machine. -**Reason**
You are trying to install when another installation is already running in your machine. +**Suggested solution:** Open and kill the msiexec process in the task manager and then continue to install Syncfusion. If the problem is still present, restart the computer and try Syncfusion® installer. -**Suggested solution**
Open and kill the msiexec process in the task manager and then continue to install Syncfusion. If the problem is still present, restart the computer and try Syncfusion® installer. -1. Open the Windows Task Manager. +1. Open Windows Task Manager. 2. Browse the Details tab. 3. Select the msiexec.exe and click **End task**. -![Installation Error MSIEXEC Kill](images/installation-error-6.png) +![Windows Task Manager showing msiexec.exe to end task](images/installation-error-6.png) ## Unable to install due to controlled folder access ***Offline*** -**Error Message:** Controlled folder access seems to be enabled in your machine. The provided install or samples location (e.g., Public Documents) is protected by the controlled folder access settings. +**Error Message:** Controlled folder access seems to be enabled on this machine. The provided install or samples location (for example, Public Documents) is protected by controlled folder access settings. -![Installation Offline Installer Error Controlled Folder Access](images/installation-error-7.png) +![Offline installer controlled folder access warning](images/installation-error-7.png) ***Online*** -**Error Message:** Controlled folder access seems to be enabled in your machine. The provided install, samples, or download location (e.g., Public Documents) is protected by the controlled folder access settings. +**Error Message:** Controlled folder access seems to be enabled on this machine. The provided install, samples, or download location (for example, Public Documents) is protected by controlled folder access settings. -![Installation Online Installer Error Controlled Folder Access](images/installation-error-8.png) +![Web installer controlled folder access warning](images/installation-error-8.png) -**Reason**
You have enabled controlled folder access settings on your computer. +**Reason:** You have enabled controlled folder access settings on your computer. -***Suggested solution*** +**Suggested solution:** **Suggestion 1:** -* We will ship our demos in the public documents folder by default. +* Syncfusion demos are installed to the Public Documents folder by default. * You have controlled folder access enabled on your machine, so our demos cannot be installed in the documents folder. If you need to install our demos in the Documents folder, follow the steps in this [link](https://support.microsoft.com/en-us/windows/allow-an-app-to-access-controlled-folders-b5b6627a-b008-2ca2-7931-7e51e912b034) and disable the controlled folder access. * You can enable this option after the installing our Syncfusion® setup. diff --git a/blazor/installation/install-nuget-packages.md b/blazor/installation/install-nuget-packages.md index e321323387..221c019bd8 100644 --- a/blazor/installation/install-nuget-packages.md +++ b/blazor/installation/install-nuget-packages.md @@ -1,13 +1,13 @@ --- layout: post -title: Install Syncfusion Blazor NuGet packages - Syncfusion -description: Learn here about the how to install Syncfusion Blazor NuGet packages from Package manager and NuGet manager. +title: Install Syncfusion Blazor NuGet packages | Syncfusion +description: Learn here about how to install Syncfusion Blazor NuGet packages using the Package Manager UI, .NET CLI, and Package Manager Console. Explore to more details. platform: Blazor -component: Common +control: Common documentation: ug --- -# Install Syncfusion® Blazor NuGet packages +# Install Syncfusion® Blazor NuGet packages ## Overview @@ -22,27 +22,27 @@ The NuGet **Package Manager UI** allows you to search, install, uninstall, and u 1. Right-click on the Blazor application or solution in the Solution Explorer, and choose **Manage NuGet Packages...** - ![Manage NuGet Packages add-in](images/ManageNuGet.png) + ![Open Manage NuGet Packages from Solution Explorer](images/ManageNuGet.png) As an alternative, after opening the Blazor application in Visual Studio, go to the **Tools** menu and after hovering **NuGet Package Manager**, select **Manage NuGet Packages for Solution...** 2. The Manage NuGet Packages window will open. Navigate to the **Browse** tab, then search for the Syncfusion® Blazor NuGet packages using a term like **"Syncfusion® Blazor"** and select the appropriate Syncfusion® Blazor NuGet package for your development. - N> The [nuget.org](https://api.nuget.org/v3/index.json) package source is selected by default in the Package source drop-down. If your Visual Studio does not have nuget.org configured, follow the instructions in the [Microsoft documents](https://learn.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio#package-sources) to set up the nuget.org feed URL. + N> The nuget.org package source is selected by default. If Visual Studio does not have nuget.org configured, follow the instructions in the [Microsoft documents](https://learn.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio#package-sources) to set up the nuget.org feed URL. - ![Blazor NuGet Packages Search](images/NuGetsearch.png) + ![Search for Syncfusion Blazor packages in the Browse tab](images/NuGetsearch.png) 3. When you select a Blazor package, the right side panel will provide more information about it. 4. By default, the package is selected with the latest version. You can choose the required version and click the **Install** button and accept the license terms. The package will be added to your Blazor application. - ![Blazor NuGet Packages Install](images/InstallNuGet.png) + ![Install a Syncfusion Blazor package from the Package Manager UI](images/InstallNuGet.png) 5. At this point, your application has all the required Syncfusion® assemblies, and you will be ready to start building high-performance, responsive app with [Syncfusion® Blazor components](https://www.syncfusion.com/blazor-components). Also, you can refer to the [Blazor help document](https://blazor.syncfusion.com/documentation/introduction) for development. ## Installation using Dotnet (.NET) CLI -The [dotnet Command Line Interface (CLI)](https://learn.microsoft.com/en-us/nuget/consume-packages/install-use-packages-dotnet-cli), allows you to add, restore, pack, publish, and manage packages without making any changes to your application files. [Dotnet add package](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-add-package?tabs=netcore2x) adds a package reference to the application file, then runs [dotnet restore](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-restore?tabs=netcore2x) to install the package. +The [dotnet Command Line Interface (CLI)]((https://learn.microsoft.com/en-us/nuget/consume-packages/install-use-packages-dotnet-cli)) lets you add, restore, pack, publish, and manage packages without making any changes to your application files. [Dotnet add package](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-add-package?tabs=netcore2x) adds a package reference to the application file, then runs [dotnet restore](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-restore?tabs=netcore2x) to install the package. Follow the below instructions to use the dotnet CLI command to install the Syncfusion® Blazor NuGet packages. @@ -72,7 +72,7 @@ The **Package Manager Console** saves NuGet packages installation time since you 1. To show the Package Manager Console, open your Blazor application in Visual Studio and navigate to **Tools -> NuGet Package Manager -> Package Manager Console**. - ![Package Manager Console ](images/console.png) + ![Package Manager Console in Visual Studio](images/console.png) 2. The **Package Manager Console** will be shown at the bottom of the screen. You can install the Syncfusion® Blazor NuGet packages by entering the following NuGet installation commands. @@ -84,13 +84,13 @@ The **Package Manager Console** saves NuGet packages installation time since you **For example:** Install-Package Syncfusion.Blazor.Grid - N> You can find the list of Syncfusion® Blazor NuGet packages which are published in nuget.org from [here](https://www.nuget.org/packages?q=Tags%3A%22Blazor%22+syncfusion) + N> Browse Syncfusion® Blazor NuGet packages on [NuGet.org](https://www.nuget.org/packages?q=Tags%3A%22Blazor%22+syncfusion). ***Install specified Syncfusion® Blazor NuGet package in specified Blazor application*** The following command will install the Syncfusion® Blazor NuGet package in the given Blazor application. - ```Install-Package - ProjectName ``` + ```Install-Package -ProjectName ``` **For example:** Install-Package Syncfusion.Blazor.Grid -ProjectName SyncfusionBlazorApp @@ -98,7 +98,7 @@ The **Package Manager Console** saves NuGet packages installation time since you ```Install-Package Syncfusion.Blazor.Grid -Version 19.2.0.44``` - ![Package Manager Console Output ](images/ConsoleInstallationOutput.png) + ![Package Manager Console output showing installed package](images/ConsoleInstallationOutput.png) 4. The NuGet package manager console will install the Syncfusion® Blazor NuGet package as well as the dependencies it has. When the installation is complete, the console will show that your Syncfusion® Blazor package has been successfully added to the application. diff --git a/blazor/installation/linux-installer/how-to-download.md b/blazor/installation/linux-installer/how-to-download.md index 811eec14ca..7b55de6397 100644 --- a/blazor/installation/linux-installer/how-to-download.md +++ b/blazor/installation/linux-installer/how-to-download.md @@ -1,22 +1,22 @@ --- layout: post -title: Downloading Syncfusion Blazor Linux installer - Syncfusion -description: Learn here about the how to download Syncfusion Blazor linux installer packages from syncfusion website. +title: Download the Syncfusion Blazor Linux installer | Syncfusion +description: Learn how to download Blazor Linux installer for trial or licensed use from your Syncfusion account, including Start trials and License and Downloads options. platform: Blazor -component: Common +control: Common documentation: ug --- -# Download Syncfusion® Blazor Linux Installer +# Download the Syncfusion® Blazor Linux installer -The Syncfusion® installer can be downloaded from the [Syncfusion](https://www.syncfusion.com/) website. You can either download the licensed installer or try our trial installer depending on your license. +Download the Syncfusion Blazor Linux installer from the Syncfusion website. Download options depend on the account status: trial or licensed. - - Trial Installer - - Licensed Installer +- Trial installer +- Licensed installer -You can download the Syncfusion® installer from [Syncfusion.com](https://www.syncfusion.com/) website +You can download the Syncfusion® installer from [Syncfusion.com](https://www.syncfusion.com/) website. -## Download the Trial Version +## Download the trial version Our 30-day trial can be downloaded in two ways. @@ -24,56 +24,56 @@ Our 30-day trial can be downloaded in two ways. * Start Trials if using components through [NuGet.org](https://www.nuget.org/packages?q=syncfusion) -### Download Free Trial Setup +### Download the free trial setup -1. You can evaluate our 30-day free trial by visiting the [Download Free Trial](https://www.syncfusion.com/downloads) page and select the product -2. After completing the required form or logging in with your registered Syncfusion® account, you can download the trial installer from the confirmation page. (as shown in below screenshot.) +1. Visit the [Download Free Trial](https://www.syncfusion.com/downloads) page and select the Blazor product. +2. Complete the form or sign in with a registered Syncfusion® account to download the Blazor trial installer from the confirmation page (as shown in below screenshot). - ![Trial and downloads of Syncfusion Blazor](images/trial-confirmation.png) + ![Trial confirmation page showing Blazor Linux installer download](images/trial-confirmation.png) 3. With a trial license, only the latest version’s trial installer can be downloaded. -4. Unlock key is not required to install the Syncfusion® Blazor Linux trial installer. -5. Before the trial expires, you can download the trial installer at any time from your registered account’s [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page (as shown in below screenshot.) +4. An unlock key is not required to install the Syncfusion® Blazor Linux trial installer. +5. Before the trial expires, download the trial installer at any time from the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page (as shown in below screenshot). - ![Trial and downloads of Syncfusion Blazor](images/trial-download.png) + ![Trials & Downloads page with Download button for the Blazor Linux installer](images/trial-download.png) -6. Click the More Download Options (element 2 in the above screenshot) button to get the Blazor Product Offline trial installer which is available in ZIP format. +6. Select More download options (element 2 in the above screenshot) to get the Essential Studio® Blazor offline trial installer (ZIP format). - ![License and downloads of Syncfusion Blazor](images/start-trial-download-offline-installer.png) + ![Trials & Downloads page showing offline installer download options](images/start-trial-download-offline-installer.png) -### Start Trials if using components through [NuGet.org](https://www.nuget.org/packages?q=syncfusion) +### Start trials if using components through NuGet.org -You should initiate an evaluation if you have already obtained our components through [NuGet.org](https://www.nuget.org/packages?q=syncfusion) +Start an evaluation if components were obtained through [NuGet.org](https://www.nuget.org/packages?q=syncfusion). -1. You can start your 30-day free trial from the [Start Trial](https://www.syncfusion.com/account/manage-trials/start-trials) page from your account. +1. Start a 30‑day Blazor trial from the [Start trial](https://www.syncfusion.com/account/manage-trials/start-trials) page. N> You can generate the license key for your active trial products from [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page. This license key will be mandatory to use our trial products in your application. To know more about License key, refer this [help topic](https://help.syncfusion.com/common/essential-studio/licensing/overview). - - ![Trial and downloads of Syncfusion Blazor](images/start-trial-download.png) + + ![Start trials page for Blazor](images/start-trial-download.png) -2. To access this page, you must sign up\log in with your Syncfusion® account. -3. Begin your trial by selecting the Syncfusion® product. +2. To access this page, sign up or log in with a Syncfusion® account. +3. Begin the trial by selecting the Syncfusion® product. - N> If you've already used the trial products and they haven't expired, you won't be able to start the trial for the same product again. + N> If an existing Blazor trial is still active, a new trial for the same product cannot be started. -4. After you've started the trial, go to the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page to get the latest version trial installer. You can generate the [unlock key](https://www.syncfusion.com/kb/8069/how-to-generate-unlock-key-for-essentials-studio-products) and [license key](https://help.syncfusion.com/common/essential-studio/licensing/how-to-generate) here at any time before the trial period expires. (as shown in below screenshot.) +4. After starting the trial, go to [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) to get the latest trial installer. You can generate the [unlock key](https://www.syncfusion.com/kb/8069/how-to-generate-unlock-key-for-essentials-studio-products) and [license key](https://help.syncfusion.com/common/essential-studio/licensing/how-to-generate) here at any time before the trial period expires. (as shown in below screenshot.) - ![License and downloads of Syncfusion Blazor](images/start-trial-download-installer.png) + ![Trials & Downloads page showing trial installer and key generation options](images/start-trial-download-installer.png) 5. You can find your current active trial products on the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page. - -## Download the License Version -1. Syncfusion® licensed products will be available in the [License & Downloads](https://www.syncfusion.com/account/downloads) page under your registered Syncfusion® account. +## Download the licensed version + +1. Licensed products are available from the [License & Downloads](https://www.syncfusion.com/account/downloads) page in the Syncfusion® account. 2. You can view all the licenses (both active and expired) associated with your account. -3. You can download Blazor Linux licensed installer by going to More Downloads Options (element 3 in the screenshot below). +3. Select More download options (element 3 in the screenshot below) to download the Blazor Linux licensed offline installer. - ![License and downloads of Syncfusion Blazor](images/license-download.png) + ![License & Downloads page showing More download options for the Blazor Linux installer](images/license-download.png) -4. Unlock key is not required to install the Syncfusion® Blazor Linux trial installer. -5. For Linux OS, ZIP formats is available for download. +4. An unlock key is not required to install the Syncfusion® Blazor Linux licensed installer. +5. For Linux, the installer is available in ZIP format (offline installer). - ![License and downloads of Syncfusion Blazor](images/Linux_Download.PNG) + ![License & Downloads page listing Blazor Linux ZIP download](images/Linux_Download.PNG) -You can also refer to the [**Blazor Linux installer**](https://blazor.syncfusion.com/documentation/installation/linux-installer/how-to-install) links for step-by-step installation guidelines. +For step-by-step installation, see [Blazor Linux installer](https://blazor.syncfusion.com/documentation/installation/linux-installer/how-to-install). \ No newline at end of file diff --git a/blazor/installation/linux-installer/how-to-install.md b/blazor/installation/linux-installer/how-to-install.md index 8ed5674daa..140ff51eeb 100644 --- a/blazor/installation/linux-installer/how-to-install.md +++ b/blazor/installation/linux-installer/how-to-install.md @@ -1,40 +1,38 @@ --- layout: post -title: Installing Syncfusion Blazor Linux installer - Syncfusion -description: Learn here about how to install Syncfusion Blazor linux installer after downloading from our Syncfusion website. +title: Install the Syncfusion Blazor Linux installer | Syncfusion +description: Learn here about how to install the Syncfusion Blazor Linux offline installer (ZIP), review included content, and register license keys in sample projects. platform: Blazor -component: Common +control: Common documentation: ug --- -# Installing Syncfusion® Blazor Linux installer +# Install the Syncfusion® Blazor Linux installer -## Step-by-Step Installation +## Install on Linux -The steps below show how to install Blazor Linux installer. +The steps below show how to install and use the Syncfusion Blazor Linux offline installer (ZIP). -1. Extract the Syncfusion® Blazor Linux installer(.zip) file. The files are extracted in your machine. +N> Prerequisites: Supported Linux distribution, .NET SDK installed, unzip tool, and sufficient disk space. - ![Welcome wizard](images/Linux_Installer1.png) - +1. Extract the Syncfusion® Blazor Linux installer ZIP to a folder. -2. The Linux zip file contains the following folders. + ![Extract the Syncfusion Blazor Linux installer ZIP to a folder](images/Linux_Installer1.png) - ![License Agreement](images/Linux_Installer2.png) - - N> The Unlock key is not required to install the Linux installer. +2. Review the extracted contents. The package includes demo source, offline NuGet packages, and supporting files. + ![Extracted contents of the Blazor Linux offline installer](images/Linux_Installer2.png) -4. You can launch the demo source and use the NuGet packages included in the Linux installer. - +N> An unlock key is not required to install or use the Blazor Linux offline installer. +3. Launch the demo projects from the extracted folder and reference the included NuGet packages as needed. ## License key registration in samples After the installation, the license key is required to register the demo source that is included in the Linux installer. To learn about the steps for license registration for the Blazor Linux installer, please refer to this. -* For server side application register the license key in Configure method of [Startup.cs](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-register-in-an-application#blazor-server-app) -* For client side application register the license key in main method of [Program.cs](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-register-in-an-application#blazor-webassembly-app) +* **Blazor Server App**: Register the license key in Configure method of [Startup.cs](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-register-in-an-application#blazor-server-app) +* **Blazor WASM App**: Register the license key in main method of [Program.cs](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-register-in-an-application#blazor-webassembly-app) You can also find the steps for getting started with Syncfusion® Blazor components in Linux, diff --git a/blazor/installation/mac-installer/how-to-download.md b/blazor/installation/mac-installer/how-to-download.md index 9f9de29305..b762c954e0 100644 --- a/blazor/installation/mac-installer/how-to-download.md +++ b/blazor/installation/mac-installer/how-to-download.md @@ -28,7 +28,7 @@ Syncfusion® provides a Blazor Mac installer 5. Before the trial expires, download the trial installer at any time from the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page. - ![Trials & Downloads page with Download button for the Blazor Mac installer](images/start-trial-download-installer.png) + ![Trials and Downloads page with Download button for the Blazor Mac installer](images/start-trial-download-installer.png) 6. Click the More Download Options (element 2 in the above screenshot) button to get the Essential Studio® Blazor Offline trial installer which is available in DMG format. @@ -50,7 +50,7 @@ Start an evaluation if components were obtained through [NuGet.org](https://www. 4. After starting the trial, go to [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) to get the latest trial installer. You can generate the [unlock key](https://support.syncfusion.com/kb/article/7053/how-to-generate-unlock-key-for-essentials-studio-products) and [license key](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-generate) here at any time before the trial period expires. (as shown in below screenshot) - ![Trials & Downloads page showing trial installer and links to generate license key](images/start-trial-download-installer.png) + ![Trials and Downloads page showing trial installer and links to generate license key](images/start-trial-download-installer.png) 5. You can find your current active trial products on the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page. @@ -62,7 +62,7 @@ Start an evaluation if components were obtained through [NuGet.org](https://www. 3. Select **More download options** to download the Blazor Mac licensed installer. - ![License & Downloads page showing More download options for the Blazor Mac installer](images/start-license-download-installer.png) + ![License and Downloads page showing More download options for the Blazor Mac installer](images/start-license-download-installer.png) 4. An unlock key is not required to install the Blazor Mac licensed installer. diff --git a/blazor/installation/mac-installer/how-to-install.md b/blazor/installation/mac-installer/how-to-install.md index 83df72be6f..d0008202e7 100644 --- a/blazor/installation/mac-installer/how-to-install.md +++ b/blazor/installation/mac-installer/how-to-install.md @@ -1,70 +1,71 @@ --- layout: post -title: Installing Syncfusion Blazor Mac installer - Syncfusion -description: Learn here about how to install Syncfusion Blazor mac installer after downloading from our Syncfusion website. +title: Install the Syncfusion Blazor Mac installer - Syncfusion +description: Learn here about how to install the Syncfusion Blazor Mac installer (DMG), handle macOS Gatekeeper prompts, and register license keys in sample projects. platform: Blazor -component: Common +control: Common documentation: ug --- -# Installing Syncfusion® Blazor Mac Installer +# Install the Syncfusion® Blazor Mac installer -The Essential Studio® Blazor Mac installer allows you to create the Blazor application in Visual Studio for Mac with the Syncfusion® Blazor components. +The Essential Studio® Blazor Mac installer installs the Syncfusion Blazor product on macOS (DMG) and integrates with Visual Studio for Mac. The steps below cover Gatekeeper prompts, installation, and license key registration for sample projects. -## Steps to resolve the warning message in Catalina OS or later +## Resolve Gatekeeper warning on macOS Catalina or later - While running Essential Studio® Blazor Mac Installer on Catalina MacOS or later, the below alert will be displayed. + When running the installer on macOS Catalina or later, a Gatekeeper alert may appear. - ![Alert Image](images/Mac_Catalina_MacOS_Alert1.png) + ![macOS Gatekeeper alert for the Syncfusion DMG](images/Mac_Catalina_MacOS_Alert1.png) - If you receive this alert, follow the below steps for the easiest solution. + If this appears, follow these steps: - 1. Right-click the downloaded dmg file. - 2. Select the "Open With" option and choose "DiskImageMounter (Default)". The following pop-up appears. - - ![pop-up Image](images/Mac_Catalina_MacOS_Alert2.png) - - 3. When you click "Open" the installer window will be opened. + 1. Right‑click the downloaded DMG file. + 2. Select Open option and choose **DiskImageMounter (Default)**. The following prompt appears. -## Step-by-Step Installation + ![macOS prompt to open the DMG with DiskImageMounter](images/Mac_Catalina_MacOS_Alert2.png) -The steps below show how to install the Essential Studio® Blazor Mac installer. + 3. Select Open to mount the DMG and continue. -1. Locate the downloaded dmg file and open the file by double click on it. +## Install on macOS - ![Installer Wizard](images/Mac_Installer1.png) +Follow these steps to install the Essential Studio® Blazor Mac installer. -2. This action will automatically mount the disk image and create a virtual drive on your desktop or in the Finder sidebar. +1. Locate the downloaded DMG file and double‑click it to open. - ![Software License Agreement Wizard](images/Mac_Installer2.png) + ![Open the downloaded Syncfusion Blazor DMG](images/Mac_Installer1.png) + +2. The disk image mounts and a virtual drive appears on the desktop or in the Finder sidebar. + + ![Mounted DMG drive visible in Finder](images/Mac_Installer2.png) 3. Copy the mounted disk file. - ![License Agreements Confirmation](images/Mac_Installer3.png) + ![Drag the Syncfusion app to Applications](images/Mac_Installer3.png) - N> The Unlock key is not required to install the Essential Studio® Blazor Mac installer. + N> An unlock key is not required to install the Essential Studio® Blazor Mac installer. -4. And paste it in “Applications” folder shortcut. +4. And paste it in “Applications” folder. - ![Destination select wizard](images/Mac_Installer4.png) + ![Copying the app into the Applications folder](images/Mac_Installer4.png) -5. Now you can open the folder to explore the Syncfusion® Essential Studio® Mac installer. +5. Open the Applications folder and launch the Syncfusion installer app. - ![Installation Type wizard](images/Mac_Installer5.png) + ![Launch the Syncfusion Blazor installer app from Applications](images/Mac_Installer5.png) -6. To remove the DMG file, Right-click on the virtual drive on your desktop or in the Finder sidebar and select “Eject.” Also delete the folder from the Applications. +6. To remove the DMG, right‑click the virtual drive (desktop or Finder sidebar) and select Eject. Also delete the folder from the Applications. - ![Authentication window](images/Mac_Installer6.png) + ![Eject the mounted DMG from Finder](images/Mac_Installer6.png) -## License key registration in samples +## Register the license key in sample projects After the installation, the license key is required to register the demo source that is included in the Mac installer. To learn about the steps for license registration for the Blazor Mac installer, please refer to this. -* For server side application register the license key in Configure method of [Startup.cs](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-register-in-an-application#blazor-server-app) -* For client side application register the license key in main method of [Program.cs](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-register-in-an-application#blazor-webassembly-app) +- **Blazor Server App**: Register the license key in [Startup.cs](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-register-in-an-application#blazor-server-app) +- **Blazor WebAssembly App**: Register the license key in [Program.cs](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-register-in-an-application#blazor-webassembly-app) +For development on macOS, see: You can also find the steps for getting started with Syncfusion® Blazor components in Mac, -* Getting started with Syncfusion® Blazor Components in [Blazor Server Side App](https://blazor.syncfusion.com/documentation/getting-started/blazor-server-side-mac/#getting-started-with-syncfusion-blazor-components-in-blazor-server-side-app-using-visual-studio-for-mac) using Visual Studio for Mac. -* Getting started with Syncfusion® Blazor Components in [Web Assembly App](https://blazor.syncfusion.com/documentation/getting-started/blazor-webassembly-visual-studio-mac/) using Visual Studio for Mac. \ No newline at end of file +- Getting started with Syncfusion Blazor components in a [Blazor Server App](https://blazor.syncfusion.com/documentation/getting-started/blazor-server-side-mac/#getting-started-with-syncfusion-blazor-components-in-blazor-server-side-app-using-visual-studio-for-mac) using Visual Studio for Mac. +- Getting started with Syncfusion Blazor components in a [Blazor WebAssembly App](https://blazor.syncfusion.com/documentation/getting-started/blazor-webassembly-visual-studio-mac/) using Visual Studio for Mac. \ No newline at end of file diff --git a/blazor/installation/offline-installer/how-to-download.md b/blazor/installation/offline-installer/how-to-download.md index c3461b22e7..69763885cf 100644 --- a/blazor/installation/offline-installer/how-to-download.md +++ b/blazor/installation/offline-installer/how-to-download.md @@ -35,7 +35,7 @@ A 30‑day trial can be downloaded in two ways. 5. Before the trial expires, download the trial installer at any time from the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page. - ![Trials & Downloads page with Download button for the Blazor offline installer](images/start-trial-download-installer.png) + ![Trials and Downloads page with Download button for the Blazor offline installer](images/start-trial-download-installer.png) 6. Select **More download options** (element 2 in the above screenshot) to get the Essential Studio® Blazor offline trial installer in EXE or ZIP format. @@ -57,7 +57,7 @@ Start an evaluation if components were obtained through [NuGet.org](https://www. 4. After starting the trial, go to [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page to get the latest trial installer. Generate the installer [unlock key](https://www.syncfusion.com/kb/8069/how-to-generate-unlock-key-for-essentials-studio-products) and the project [license key](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-generate) before the trial period expires. - ![Trials & Downloads page showing trial installer and key generation options](images/start-trial-download-installer.png) + ![Trials and Downloads page showing trial installer and key generation options](images/start-trial-download-installer.png) 5. You can find your current active trial products on the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page. @@ -69,7 +69,7 @@ Start an evaluation if components were obtained through [NuGet.org](https://www. 3. Select **More download options** to download the Blazor licensed offline installer. - ![License & Downloads page showing More download options for the Blazor offline installer](images/start-license-download-installer.png) + ![License and Downloads page showing More download options for the Blazor offline installer](images/start-license-download-installer.png) 4. For Windows, EXE and ZIP formats are available for download. Both are offline installers. diff --git a/blazor/installation/web-installer/how-to-download.md b/blazor/installation/web-installer/how-to-download.md index c8a3b5a758..5141e8f2a1 100644 --- a/blazor/installation/web-installer/how-to-download.md +++ b/blazor/installation/web-installer/how-to-download.md @@ -35,7 +35,7 @@ A 30‑day trial can be downloaded in two ways. 5. Click Download to get the Blazor web installer. - ![Trials & Downloads page with Download button for the Blazor web installer](images/start-trial-download-installer-1.png) + ![Trials and Downloads page with Download button for the Blazor web installer](images/start-trial-download-installer-1.png) ### Start trials if using components through NuGet.org @@ -53,7 +53,7 @@ Start an evaluation if components were obtained through [NuGet.org](https://www. 4. After starting the trial, go to [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) to get the latest trial installer. Generate the installer [unlock key](https://support.syncfusion.com/kb/article/7053/how-to-generate-unlock-key-for-essentials-studio-products) and the project [license key](https://blazor.syncfusion.com/documentation/getting-started/license-key/how-to-generate) before the trial period expires. - ![Trials & Downloads page showing trial installer and key generation options](images/start-trial-download-installer.png) + ![Trials and Downloads page showing trial installer and key generation options](images/start-trial-download-installer.png) 5. You can find your current active trial products on the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page. @@ -65,11 +65,11 @@ Start an evaluation if components were obtained through [NuGet.org](https://www. 3. Click Download to get the Blazor web installer. - ![License & Downloads page with Download button for the Blazor web installer](images/blazor-license-download-installer.png) + ![License and Downloads page with Download button for the Blazor web installer](images/blazor-license-download-installer.png) 4. Before the license expires, you can download the installer at any time from your registered account’s [License & Downloads](https://www.syncfusion.com/account/downloads) page (See the screenshot below.) - ![License & Downloads page listing available Blazor installer versions](images/blazor-web-installer-license.png) + ![License and Downloads page listing available Blazor installer versions](images/blazor-web-installer-license.png) 5. After downloading, unlock the web installer by signing in with registered Syncfusion® credentials. diff --git a/blazor/installation/web-installer/images/webinstaller-uninstall-6.png b/blazor/installation/web-installer/images/webinstaller-uninstall-6.png index b8af30ca2b60ad4baeea83bbe35341493cfe2219..f47faf1620b20f3483147765a0c62f35abb33238 100644 GIT binary patch literal 36604 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

RUE3nbj>WWZ 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® Blazor components, and the sample browser. +Run the following commands in the terminal (PowerShell on Windows): - ```bash - dotnet restore - ``` +1. Restore dependencies - This will download and install all the dependencies listed in the **.csproj** file. +```bash +dotnet restore +``` -2. **Serve the App Locally** - Once the dependencies are installed, you can run the app locally by starting the Blazor development server. To do so, run the following command. - - ```bash - dotnet run - ``` +Restores the packages referenced in the project file. Note: dotnet run also performs an implicit restore if needed. - This command will start the local development server, and you'll see an output in the terminal indicating the app is running. Typically, it will display a local host URL like this: +2. Serve the app locally - ![Local development server running](images/local-development-server-running.png) +Once the dependencies are installed, you can run the app locally by starting the Blazor development server. To do so, run the following command. - To view the app in your browser, simply **Ctrl + Click** (or **Cmd + Click** on macOS) on the local host URL displayed in the terminal. This will open the app in your default browser, allowing you to interact with the blocks. +```bash +dotnet run +``` -### Step 4: License Key Requirement +This command will start the local development server, and you'll see an output in the terminal indicating the app is running. Typically, it will display a local host URL like this: + +![Terminal output showing the local development server URL](images/local-development-server-running.png) + +To view the app in your browser, simply **Ctrl + Click** (or **Cmd + Click** on macOS) on the local host URL displayed in the terminal. This will open the app in your default browser, allowing you to interact with the blocks. + +### Step 4: License key requirement The blocks include several Syncfusion® Blazor components that require an active license key for proper display and usage. To activate the license, refer to the topics below: @@ -65,6 +66,6 @@ Once you have your license key, register it in the Blazor app through any one of By adding the license key, you ensure seamless browsing and usage of the blocks, making them fully functional and free from licensing issues. -## Get Started by Viewing the Online Demo +## Get started by viewing the online demo If you prefer a quick demo instead of downloading the app, you can explore the blocks directly through the online demo. Simply visit the official [Essential UI Kit for Blazor](https://blazor.syncfusion.com/essential-ui-kit) website to interact with the blocks. diff --git a/blazor/ui-kit/overview.md b/blazor/ui-kit/overview.md index 4e95bf17f8..03c04d2a70 100644 --- a/blazor/ui-kit/overview.md +++ b/blazor/ui-kit/overview.md @@ -1,16 +1,18 @@ --- layout: post -title: Overview of Essential UI Kit for Blazor | Syncfusion -description: Learn all about the overview of the Essential UI Kit for Blazor in Syncfusion Essential Studio and more here. +title: Essential UI Kit for Blazor overview | Syncfusion +description: Explore the Essential UI Kit for Blazor over 260 ready-to-use blocks built with Razor, CSS, C#, and Blazor components, with Tailwind and Bootstrap support. platform: Blazor -control: UI Kit +control: UI Kit documentation: ug --- -# Overview: Essential UI Kit for Blazor +# Essential UI Kit for Blazor overview The Essential UI Kit for Blazor comprises over 260 responsive, ready-to-use, easy-to-implement, and customizable blocks designed to help you quickly build web applications. These blocks are developed using HTML (Razor), CSS, C#, and Syncfusion® Blazor components, delivering robust functionality and ease of use. They are compatible with both Tailwind CSS and Bootstrap 5.3 CSS frameworks, supporting light and dark modes to offer flexibility and seamless integration across different user preferences. The UI kit includes blocks for the following categories: +The UI Kit includes blocks for the following categories: + @@ -110,19 +112,20 @@ The Essential UI Kit for Blazor comprises over 260 responsive, ready-to-use, eas > These provide pre-designed blocks for the quick implementation of web applications. However, customization and the integration of business logic must be handled on your end to meet your specific requirements. -## Supported Blazor Versions +## Supported Blazor versions + The blocks designed and showcased are built using .NET 8, but you can use other versions of Blazor as well, since they are primarily developed with HTML, CSS, and C# to facilitate building your web applications. Additionally, for using Syncfusion® Blazor components, the compatible Blazor and Syncfusion® versions are outlined in this [link](https://blazor.syncfusion.com/documentation/common/how-to/version-compatibility) for your reference. -## Supported Browsers +## Supported browsers - Google Chrome - Microsoft Edge - Safari - Mozilla Firefox -## Supported CSS Frameworks +## Supported CSS frameworks - Tailwind CSS - Bootstrap 5.3 -Both **Tailwind CSS** and **Bootstrap 5.3** support **Light** and **Dark** modes, allowing you to seamlessly adapt the blocks to your web applications based on user preferences or system settings. This flexibility ensures a consistent and optimal user experience across different environments and devices. +Both **Tailwind CSS** and **Bootstrap 5.3** support **Light** and **Dark** modes, allowing the blocks to adapt to user preferences or system settings for a consistent experience across devices. From ea27dfe7065902e0080fdf38e1342391dc2e819c Mon Sep 17 00:00:00 2001 From: Backiaraj Date: Wed, 22 Oct 2025 10:03:05 +0530 Subject: [PATCH 3/9] Updated UG reference and alt text error --- blazor/installation/linux-installer/how-to-download.md | 10 +++++----- blazor/installation/linux-installer/how-to-install.md | 4 ++-- blazor/installation/mac-installer/how-to-install.md | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/blazor/installation/linux-installer/how-to-download.md b/blazor/installation/linux-installer/how-to-download.md index 7b55de6397..235ae9f53e 100644 --- a/blazor/installation/linux-installer/how-to-download.md +++ b/blazor/installation/linux-installer/how-to-download.md @@ -35,11 +35,11 @@ Our 30-day trial can be downloaded in two ways. 4. An unlock key is not required to install the Syncfusion® Blazor Linux trial installer. 5. Before the trial expires, download the trial installer at any time from the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page (as shown in below screenshot). - ![Trials & Downloads page with Download button for the Blazor Linux installer](images/trial-download.png) + ![Trials and Downloads page with Download button for the Blazor Linux installer](images/trial-download.png) 6. Select More download options (element 2 in the above screenshot) to get the Essential Studio® Blazor offline trial installer (ZIP format). - ![Trials & Downloads page showing offline installer download options](images/start-trial-download-offline-installer.png) + ![Trials and Downloads page showing offline installer download options](images/start-trial-download-offline-installer.png) ### Start trials if using components through NuGet.org @@ -58,7 +58,7 @@ Start an evaluation if components were obtained through [NuGet.org](https://www. 4. After starting the trial, go to [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) to get the latest trial installer. You can generate the [unlock key](https://www.syncfusion.com/kb/8069/how-to-generate-unlock-key-for-essentials-studio-products) and [license key](https://help.syncfusion.com/common/essential-studio/licensing/how-to-generate) here at any time before the trial period expires. (as shown in below screenshot.) - ![Trials & Downloads page showing trial installer and key generation options](images/start-trial-download-installer.png) + ![Trials and Downloads page showing trial installer and key generation options](images/start-trial-download-installer.png) 5. You can find your current active trial products on the [Trials & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) page. @@ -69,11 +69,11 @@ Start an evaluation if components were obtained through [NuGet.org](https://www. 2. You can view all the licenses (both active and expired) associated with your account. 3. Select More download options (element 3 in the screenshot below) to download the Blazor Linux licensed offline installer. - ![License & Downloads page showing More download options for the Blazor Linux installer](images/license-download.png) + ![License and Downloads page showing More download options for the Blazor Linux installer](images/license-download.png) 4. An unlock key is not required to install the Syncfusion® Blazor Linux licensed installer. 5. For Linux, the installer is available in ZIP format (offline installer). - ![License & Downloads page listing Blazor Linux ZIP download](images/Linux_Download.PNG) + ![License and Downloads page listing Blazor Linux ZIP download](images/Linux_Download.PNG) For step-by-step installation, see [Blazor Linux installer](https://blazor.syncfusion.com/documentation/installation/linux-installer/how-to-install). \ No newline at end of file diff --git a/blazor/installation/linux-installer/how-to-install.md b/blazor/installation/linux-installer/how-to-install.md index 140ff51eeb..316f7b5994 100644 --- a/blazor/installation/linux-installer/how-to-install.md +++ b/blazor/installation/linux-installer/how-to-install.md @@ -36,5 +36,5 @@ After the installation, the license key is required to register the demo source You can also find the steps for getting started with Syncfusion® Blazor components in Linux, -* Getting started with Syncfusion® Blazor Components in [Blazor Server Side App](https://blazor.syncfusion.com/documentation/getting-started/blazor-server-side-mac/#getting-started-with-syncfusion-blazor-components-in-blazor-server-side-app-using-visual-studio-for-mac) using Visual Studio for Linux. -* Getting started with Syncfusion® Blazor Components in [Web Assembly App](https://blazor.syncfusion.com/documentation/getting-started/blazor-webassembly-visual-studio-mac/) using Visual Studio for Linux. \ No newline at end of file +* Getting started with Syncfusion® Blazor Components in [Blazor Server Side App](https://blazor.syncfusion.com/documentation/getting-started/blazor-server-side-mac#getting-started-with-syncfusion-blazor-components-in-blazor-server-side-app-using-visual-studio-for-mac) using Visual Studio for Linux. +* Getting started with Syncfusion® Blazor Components in [Web Assembly App](https://blazor.syncfusion.com/documentation/getting-started/blazor-webassembly-visual-studio-mac) using Visual Studio for Linux. \ No newline at end of file diff --git a/blazor/installation/mac-installer/how-to-install.md b/blazor/installation/mac-installer/how-to-install.md index d0008202e7..bca1381642 100644 --- a/blazor/installation/mac-installer/how-to-install.md +++ b/blazor/installation/mac-installer/how-to-install.md @@ -67,5 +67,5 @@ After the installation, the license key is required to register the demo source For development on macOS, see: You can also find the steps for getting started with Syncfusion® Blazor components in Mac, -- Getting started with Syncfusion Blazor components in a [Blazor Server App](https://blazor.syncfusion.com/documentation/getting-started/blazor-server-side-mac/#getting-started-with-syncfusion-blazor-components-in-blazor-server-side-app-using-visual-studio-for-mac) using Visual Studio for Mac. -- Getting started with Syncfusion Blazor components in a [Blazor WebAssembly App](https://blazor.syncfusion.com/documentation/getting-started/blazor-webassembly-visual-studio-mac/) using Visual Studio for Mac. \ No newline at end of file +- Getting started with Syncfusion Blazor components in a [Blazor Server App](https://blazor.syncfusion.com/documentation/getting-started/blazor-server-side-mac#getting-started-with-syncfusion-blazor-components-in-blazor-server-side-app-using-visual-studio-for-mac) using Visual Studio for Mac. +- Getting started with Syncfusion Blazor components in a [Blazor WebAssembly App](https://blazor.syncfusion.com/documentation/getting-started/blazor-webassembly-visual-studio-mac) using Visual Studio for Mac. \ No newline at end of file From 4380467751e88885469bebbc4224fa1ac5d3f3f1 Mon Sep 17 00:00:00 2001 From: Backiaraj Date: Wed, 22 Oct 2025 12:26:18 +0530 Subject: [PATCH 4/9] Updated the Blazor common UG documentation --- ...build-your-first-blazor-app-with-blocks.md | 55 +++++++++---------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/blazor/ui-kit/build-your-first-blazor-app-with-blocks.md b/blazor/ui-kit/build-your-first-blazor-app-with-blocks.md index c61700fc9f..dcbbfd5857 100644 --- a/blazor/ui-kit/build-your-first-blazor-app-with-blocks.md +++ b/blazor/ui-kit/build-your-first-blazor-app-with-blocks.md @@ -1,30 +1,30 @@ --- layout: post -title: Build your first Blazor app with our blocks | Syncfusion -description: Learn all about building your first Blazor app using our blocks from the Essential Blazor UI Kit in Syncfusion Essential Studio and more. +title: Build your first Blazor app with UI Kit blocks | Syncfusion +description: Build a Blazor Web App using blocks from the Essential UI Kit. Configure Tailwind or Bootstrap themes and add a Sign in block. Explore to more details. platform: Blazor control: UI Kit documentation: ug --- -# Build your first Blazor App with our blocks +# Build your first Blazor App with UI Kit blocks -This tutorial guides you through building a Blazor Web App using Syncfusion's UI Kit blocks. It demonstrates how to set up a new Blazor Server project, choose between Tailwind CSS or Bootstrap 5.3 themes, and add a sign-in block in your application. The goal is to help developers quickly build responsive, modern web apps using a variety of prebuilt blocks with minimal effort. +This tutorial guides you through building a Blazor Web App using blocks from the Syncfusion Essential UI Kit for Blazor. It demonstrates how to create a new project, choose Tailwind CSS or Bootstrap 5.3 themes, and add a Sign in block. The goal is to help developers quickly build responsive, modern web apps using prebuilt blocks with minimal effort. ## Create a new Blazor App -A Blazor Web App is used for this example. To create a new app, follow the official setup guide [here](https://learn.microsoft.com/en-us/training/modules/build-your-first-blazor-web-app/3-exercise-configure-environment?pivots=vscode). This tutorial then walks through the step-by-step process of adding a simple sign-in block to the newly created app, named **MyBlazorApp**. +A Blazor Web App is used for this example. To create a new app, follow the Microsoft setup guide [here](https://learn.microsoft.com/training/modules/build-your-first-blazor-web-app/3-exercise-configure-environment?pivots=vscode). This tutorial then walks through adding a simple Sign in block to the newly created app named **MyBlazorApp**. > This tutorial focuses on using Blazor Server rendering mode rather than Blazor WebAssembly. ![New Blazor App](images/new-blazor-app.png) -## Setting up Tailwind CSS or Bootstrap 5.3 theme in the app +## Set up Tailwind CSS or Bootstrap 5.3 theme After creating the new Blazor app named **MyBlazorApp**, open it in Visual Studio Code (which will be used throughout this walkthrough). The next step is to choose a theme, either Tailwind CSS or Bootstrap 5.3, in either light or dark mode, and configure the app accordingly. ### Tailwind CSS configuration -If you choose **Tailwind CSS** theme, follow these steps to configure it. +If the **Tailwind CSS** theme is selected, follow these steps to configure it. 1. In **Components -> App.razor** file, add the following code for light mode (`class="light"`) and dark mode (`class="dark"`) in the `` tag. @@ -40,7 +40,7 @@ If you choose **Tailwind CSS** theme, follow these steps to configure it. ``` -2. In **Components -> App.razor** file, add the following scripts in the `` tag. The main purpose of these scripts is to dynamically generate the appropriate Tailwind CSS classes at runtime based on the styles used in the application, and to replace the primary (highlight) color in the CSS with a custom indigo color palette. +2. In the **Components -> App.razor** file, add the following scripts in the `` tag. These scripts generate Tailwind CSS classes at runtime based on the styles used in the application and replace the primary color with a custom indigo palette. This CDN approach is suitable for demos; for production builds, integrate Tailwind via a build pipeline. ```html @@ -70,9 +70,9 @@ If you choose **Tailwind CSS** theme, follow these steps to configure it. } ``` - > The Syncfusion® Blazor components uses **Indigo** for light mode and **Cyan** for dark mode. To maintain a uniform appearance, change the primary color accordingly. + > Syncfusion® Blazor components use **Indigo** for light mode and **Cyan** for dark mode. To maintain a uniform appearance, adjust the primary color accordingly. -3. In **Components -> App.razor** file, add the style oriented CDN link for Syncfusion® Blazor components in the `` tag. +3. In the **Components -> App.razor** file, add the theme stylesheet CDN link for Syncfusion® Blazor components in the `` tag. - For **light mode**: @@ -86,7 +86,7 @@ If you choose **Tailwind CSS** theme, follow these steps to configure it. ``` -4. **OPTIONAL**: If you wish to use our font icons prepared for **Tailwind CSS**, you can include the following CDN link: +4. **Optional**: To use the font icons prepared for **Tailwind CSS**, include the following CDN link: ```html @@ -100,7 +100,7 @@ Now that the **Tailwind CSS** theme is configured for either light or dark mode ### Bootstrap 5.3 configuration -If you choose **Bootstrap 5.3** theme, follow these steps to configure it. +If the **Bootstrap 5.3** theme is selected, follow these steps to configure it. 1. In **Components -> App.razor** file, add the following code for light mode (`data-bs-theme="light"`) and dark mode (`data-bs-theme="dark"`) in the `` tag. @@ -116,13 +116,13 @@ If you choose **Bootstrap 5.3** theme, follow these steps to configure it. ``` -2. In **Components -> App.razor** file, add the style oriented CDN link for **Bootstrap 5.3** theme in the `` tag. +2. In the **Components -> App.razor** file, add the CDN link for the **Bootstrap 5.3** theme stylesheet in the `` tag. ```html ``` -3. In **Components -> App.razor** file, add the style oriented CDN link for Syncfusion® Blazor components in the `` tag. +3. In the **Components -> App.razor** file, add the theme stylesheet CDN link for Syncfusion® Blazor components in the `` tag. - For **light mode**: @@ -136,7 +136,7 @@ If you choose **Bootstrap 5.3** theme, follow these steps to configure it. ``` -4. **OPTIONAL**: If you wish to use our font icons prepared for **Bootstrap 5.3**, you can include the following CDN link: +4. **Optional**: To use the font icons prepared for **Bootstrap 5.3**, include the following CDN link: ```html @@ -154,26 +154,25 @@ Now that **MyBlazorApp** is set up with the desired theme configuration, the nex ### Steps to explore and copy block code snippets from the online demo -1. In the [online demo](https://blazor.syncfusion.com/essential-ui-kit), navigate to the **Authentication** category and select the **Sign In** block. This will direct you to the appropriate demo page. +1. In the [online demo](https://blazor.syncfusion.com/essential-ui-kit), navigate to the **Authentication** category and select the **Sign in** block. This opens the corresponding demo page. ![Navigate to the sign-in block demo](images/navigate-to-the-sign-in-block-demo.png) -2. On the demo page, go to the first demo, which showcases a simple sign-in block. Choose the desired theme, then switch from the **Preview** tab to the **Code** tab. +2. On the demo page, open the first demo, which showcases a simple Sign in block. Choose the desired theme, then switch from the **Preview** tab to the **Code** tab. ![Choose Tailwind CSS or Bootstrap theme](images/choose-tailwind-or-bootstrap-theme.png) -3. In the **Code** tab, copy the Razor (HTML) code using the **Copy to Clipboard** option and paste it into the **Components -> Pages -> Home.razor** file, replacing its content with the provided "Hello, world!" example. +3. In the **Code** tab, copy the Razor (HTML) code using the **Copy to Clipboard** option and paste it into the **Components -> Pages -> Home.razor** file, replacing the default "Hello, world!" content. ![Copy HTML code snippet to clipboard](images/copy-HTML-code-snippet-to-clipboard.png) > Ensure that you do not remove the `@page` directive and `` element while replacing the content. These are essential for routing and setting the page title. - -4. If CSS is provided, copy the CSS code, create a new file **Components -> Pages -> Home.razor.css**, and paste the code into it. Similarly, if a C# code is provided, create a new file **Components -> Pages -> Home.razor.cs** and paste the C# code into it. Otherwise, you can ignore this step. +4. If CSS is provided, copy the CSS code, create a new file **Components -> Pages -> Home.razor.css**, and paste the code into it. If C# code is provided, create a new file **Components -> Pages -> Home.razor.cs** and paste the code into it. Otherwise, ignore this step. ### Steps to explore and copy block code snippets from the GitHub source -1. On [downloading](https://github.com/syncfusion/essential-ui-kit-for-blazor) and opening the GitHub source in Visual Studio Code, navigate to the following folder: **Components -> Pages -> BlocksSection**. +1. After [downloading](https://github.com/syncfusion/essential-ui-kit-for-blazor) and opening the source in Visual Studio Code, navigate to **Components -> Pages -> BlocksSection**. ![Downloaded GitHub app in Visual Studio Code](images/downloaded-github-app-in-visual-studio-code.png) @@ -189,31 +188,31 @@ Now that **MyBlazorApp** is set up with the desired theme configuration, the nex ## Steps to install and configure Syncfusion® Blazor components -While copying and pasting the Razor (HTML) code, you'll notice that Syncfusion® Blazor components are used. To incorporate them into **MyBlazorApp**, install the necessary packages and import the corresponding namespaces to the **Components -> _Imports.razor** file for the app to run. +While copying and pasting the Razor code, note that Syncfusion® Blazor components are used. To incorporate them into **MyBlazorApp**, install the necessary packages and import the corresponding namespaces in **Components -> _Imports.razor** so the app can compile and run. In the simple sign-in block, components such as textbox, checkbox and button are used. After copying and pasting Razor (HTML) code into the Razor file, open the **MyBlazorApp.csproj** file and add the required nuget packages: `Syncfusion.Blazor.Buttons` and `Syncfusion.Blazor.Inputs`. For more details about other Syncfusion® Blazor component packages, refer to this [link](https://www.nuget.org/packages?q=Syncfusion.Blazor) ![Adding required packages for Syncfusion components](images/adding-required-packages-for-syncfusion-components.png) -Once the necessary packages are added, run the following command via the terminal to install those packages. +After the packages are added, run the following command in the terminal to install them. ```bash dotnet restore ``` -After restoring the packages, import the required namespaces `Syncfusion.Blazor.Buttons` and `Syncfusion.Blazor.Inputs` in the _Imports.razor file to enable Syncfusion® components in the application. +After restoring the packages, import the required namespaces `Syncfusion.Blazor.Buttons` and `Syncfusion.Blazor.Inputs` in **Components -> _Imports.razor** to enable Syncfusion® components in the application. ![Importing Syncfusion Namespaces](images/import-syncfusion-namespaces.png) -Finally, again check the [online demo](https://blazor.syncfusion.com/essential-ui-kit) or the [GitHub repository](https://github.com/syncfusion/essential-ui-kit-for-blazor) and copy the required Razor (HTML) code for the simple sign-in block into your app as outlined in the previous topic. +Finally, revisit the [online demo](https://blazor.syncfusion.com/essential-ui-kit) or the [GitHub repository](https://github.com/syncfusion/essential-ui-kit-for-blazor) and copy the required Razor (HTML) code for the simple Sign in block into your app as outlined above. ## Steps to download and add assets to the app -If you want to view and experience the images used in our design, you can download the **assets** folder from the following [GitHub repository](https://github.com/syncfusion/essential-ui-kit-for-blazor/tree/master/UI_Blocks/wwwroot/assets), place it inside the **wwwroot** folder of **MyBlazorApp**, and modify the image URLs in the Razor (HTML) if necessary. +To use the images from the design, download the **assets** folder from the [GitHub repository](https://github.com/syncfusion/essential-ui-kit-for-blazor/tree/master/UI_Blocks/wwwroot/assets), place it inside the **wwwroot** folder of **MyBlazorApp**, and update image URLs in the Razor (HTML) file if necessary. ## Steps to run the app -Now that everything is set up in **MyBlazorApp** — including the Razor (HTML), CSS (if applicable), C# (if applicable), and assets (optional) — you are ready to build and launch the app. Type the following command in the terminal, and you will see a localhost URL provided by the Blazor development server. +With **MyBlazorApp** set up—including Razor markup, CSS (if applicable), C# (if applicable), and and assets (optional) — you can build and run the app. Run the following command in the terminal; a localhost URL will be provided by the Blazor development server. ```bash dotnet run @@ -221,6 +220,6 @@ dotnet run ![Build and launch the app](images/build-and-launch-the-app.png) -To view the app in your browser, simply **Ctrl + Click** (or **Cmd + Click** on macOS) on the localhost URL displayed in the terminal. This will open the app in your default browser, allowing you to view and experience the simple sign-in block. +To view the app in a browser, **Ctrl+click** (or **Cmd+click** on macOS) the localhost URL displayed in the terminal. This opens the app in the default browser and displays the simple Sign in block. ![View the app in the browser using the localhost URL](images/view-the-app-in-the-browser-using-the-localhost-URL.png) From 08dbd4ba6b943ad5b66e0c9740202fb2434c4363 Mon Sep 17 00:00:00 2001 From: Backiaraj Date: Wed, 22 Oct 2025 18:31:05 +0530 Subject: [PATCH 5/9] Cleared CI error --- blazor/ui-kit/build-your-first-blazor-app-with-blocks.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blazor/ui-kit/build-your-first-blazor-app-with-blocks.md b/blazor/ui-kit/build-your-first-blazor-app-with-blocks.md index dcbbfd5857..9b4f11e247 100644 --- a/blazor/ui-kit/build-your-first-blazor-app-with-blocks.md +++ b/blazor/ui-kit/build-your-first-blazor-app-with-blocks.md @@ -9,10 +9,10 @@ documentation: ug # Build your first Blazor App with UI Kit blocks -This tutorial guides you through building a Blazor Web App using blocks from the Syncfusion Essential UI Kit for Blazor. It demonstrates how to create a new project, choose Tailwind CSS or Bootstrap 5.3 themes, and add a Sign in block. The goal is to help developers quickly build responsive, modern web apps using prebuilt blocks with minimal effort. +This tutorial guides you through building a Blazor Web App using blocks from the Syncfusion Essential UI Kit for Blazor. It demonstrates how to create a new project, choose Tailwind CSS or Bootstrap 5.3 themes, and add a Sign in block. The goal is to help developers quickly build responsive, modern web apps using pre-built blocks with minimal effort. ## Create a new Blazor App -A Blazor Web App is used for this example. To create a new app, follow the Microsoft setup guide [here](https://learn.microsoft.com/training/modules/build-your-first-blazor-web-app/3-exercise-configure-environment?pivots=vscode). This tutorial then walks through adding a simple Sign in block to the newly created app named **MyBlazorApp**. +A Blazor Web App is used for this example. To create a new app, follow the Microsoft setup guide [here](https://learn.microsoft.com/en-us/training/modules/build-your-first-blazor-web-app/3-exercise-configure-environment?pivots=vscode). This tutorial then walks through adding a simple Sign in block to the newly created app named **MyBlazorApp**. > This tutorial focuses on using Blazor Server rendering mode rather than Blazor WebAssembly. From c7f3c43fef11ddd2dbd934de0ef7acae6fe58371 Mon Sep 17 00:00:00 2001 From: Backiaraj Date: Wed, 22 Oct 2025 18:46:03 +0530 Subject: [PATCH 6/9] Updated Upgrade UG documentation --- .../how-to-upgrade-syncfusion-components-using-vs-extensions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blazor/upgrade/how-to-upgrade-syncfusion-components-using-vs-extensions.md b/blazor/upgrade/how-to-upgrade-syncfusion-components-using-vs-extensions.md index 586a38b4b2..41f7c26a3b 100644 --- a/blazor/upgrade/how-to-upgrade-syncfusion-components-using-vs-extensions.md +++ b/blazor/upgrade/how-to-upgrade-syncfusion-components-using-vs-extensions.md @@ -7,7 +7,7 @@ control: Common documentation: ug --- -# Upgrade Syncfusion® Blazor components +# Upgrade Syncfusion® Blazor components to latest version The Syncfusion® Blazor migration add-in for Visual Studio updates an existing Syncfusion Blazor application from one Essential Studio® version to another. This reduces the amount of manual work required when migrating the Syncfusion® version. From a4f4f9ee736d7ce2660cf3076735ad966e3bc3da Mon Sep 17 00:00:00 2001 From: Backiaraj Date: Thu, 23 Oct 2025 19:02:51 +0530 Subject: [PATCH 7/9] Updated the Blazor common UG documentation --- .../build-a-blazor-stay-reservation-app.md | 109 +++++++++--------- .../overview.md | 21 ++-- 2 files changed, 64 insertions(+), 66 deletions(-) diff --git a/blazor/tutorials/build-a-blazor-stay-reservation-app.md b/blazor/tutorials/build-a-blazor-stay-reservation-app.md index 35af0a6759..6b48fb8645 100644 --- a/blazor/tutorials/build-a-blazor-stay-reservation-app.md +++ b/blazor/tutorials/build-a-blazor-stay-reservation-app.md @@ -1,24 +1,24 @@ --- layout: post -title: Build a Blazor Stay Reservation App - Syncfusion -description: Step by step tutorial to build a Blazor Stay Reservation Application using Syncfusion Blazor components. +title: Build a Blazor stay reservation app - Syncfusion +description: Learn here about step-by-step tutorial to build a Blazor stay reservation application using Syncfusion Blazor components like Scheduler, Sidebar, and Toast. platform: Blazor -component: Tutorials +control: Tutorials documentation: ug --- -# Build a Blazor Stay Reservation App with Syncfusion® Blazor Components +# Build a Blazor stay reservation app with Syncfusion® Blazor components -In this tutorial, we'll walk through the process of building a "Stay Reservation" application. This demonstrates how to use the **Syncfusion® Blazor Scheduler** component as the centerpiece of a booking system, complete with filtering, booking form and a responsive layout. +This tutorial explains how to build a stay reservation application. It demonstrates how to use the **Syncfusion® Blazor Scheduler** component as the centerpiece of a booking system, with filtering, a booking form, and a responsive layout. + +By the end of this tutorial, the reader will be able to: +* Set up a Blazor project with Syncfusion® components. +* Configure the Blazor Scheduler for a reservation system. +* Manage application state using a dependency-injected service. +* Build a filterable sidebar with checkboxes and accordions. +* Combine multiple components to create a polished application. -By the end of this tutorial, you will have learned how to: -* Set up a Blazor project with Syncfusion® components. -* Configure the Blazor Scheduler for a reservation system. -* Manage application state using a dependency-injected service. -* Build a filterable sidebar with Checkboxes and Accordions. -* Combine multiple components to create a polished, final application. -Let's get started! ## Prerequisites @@ -26,18 +26,18 @@ Let's get started! ## Create the Blazor Web App -First, let's create a new Blazor Web App. +Create a new Blazor Web App. ```bash dotnet new blazor -o StayReservation cd StayReservation ``` -Choose the "Blazor Web App" template. For this project, we'll use the **Interactive Server** render mode for simplicity. +Choose the "Blazor Web App" template. For this project, use the **Interactive Server** render mode for simplicity. -## Add and Configure Syncfusion® Blazor Components +## Add and configure Syncfusion® Blazor components -Next, we need to add the Syncfusion® Blazor libraries to our project. We'll need packages for the Scheduler, navigation elements (like the Sidebar and Accordion), and various input components. +Next, add the Syncfusion® Blazor libraries to the project. Packages are required for the Scheduler, navigation elements (such as Sidebar and Accordion), and input components. Install the essential Syncfusion® Blazor NuGet packages: @@ -47,20 +47,20 @@ dotnet add package Syncfusion.Blazor.Notifications dotnet add package Syncfusion.Blazor.Themes ``` -Now, let's configure the app to recognize and style the Syncfusion® components. +Configure the app to recognize and style the Syncfusion® components. -1. **Register Syncfusion® Services** +1. **Register Syncfusion® services** - In your `Program.cs` file, register the Syncfusion® Blazor service. + In `Program.cs`, register the Syncfusion® Blazor service. ```csharp // Add the following line before builder.Build() builder.Services.AddSyncfusionBlazor(); ``` -2. **Add Theme and Script References** +2. **Add theme and script references** - Open `Components/App.razor`. We need to add the Syncfusion® theme stylesheet and the necessary script reference for component interactivity. We'll use the modern `tailwind.css` theme. + Open `Components/App.razor`. Add the Syncfusion® theme stylesheet and the script reference for component interactivity. The example uses the `tailwind.css` theme. ```html @@ -86,9 +86,9 @@ Now, let's configure the app to recognize and style the Syncfusion® namespaces to your `_Imports.razor` file. + To avoid adding `@using` directives in each component, add the commonly used Syncfusion® namespaces to the `_Imports.razor` file. ```csharp @using StayReservation @@ -101,7 +101,9 @@ Now, let's configure the app to recognize and style the Syncfusion`: We define our "Floors" resource. This maps the `FloorId` field in our `AppointmentData` to the `FloorId` in our `floorData` list, automatically assigning colors and text to the resource groups headers. -* ``: We use templates to customize the date header, cell, and resource header. +* ``: Binds the scheduler's events to the list in `AppointmentService`. +* ``: Groups by the resource named "Floors". +* ``: Defines the "Floors" resource. This maps the `FloorId` field in `AppointmentData` to the `FloorId` in the `floorData` list, assigning colors and text to resource group headers. +* ``: Uses templates to customize the date header, cell, and resource header. ## Assemble the Main Page -Now, let's bring it all together in the main `Index.razor` page. This component will host the sidebar and the schedule, along with a header to control the UI. +Bring it together in the main `Index.razor` page. This component hosts the sidebar and the schedule, along with a header to control the UI. Update `Components/Pages/Index.razor` with the following code: @@ -346,11 +347,11 @@ Update `Components/Pages/Index.razor` with the following code: ``` -## Implement the Filtering Logic +## Implement the filtering logic -We need to connect the checkboxes in the sidebar to the data displayed in the scheduler. Since we're using our `AppointmentService` to hold the state, we can detect changes to the checkbox values and re-filter the scheduler's resource data. Can bind the change event to checkbox and sliders to form the filter query and update the resource data. +Connect the checkboxes in the sidebar to the data displayed in the scheduler. Since `AppointmentService` holds the state, detect changes to the checkbox and slider values, form the filter query, and update the resource data. -Refer the following code to implement the filtering logic in `Components/Pages/Sidebar.razor`: +Use the following code to implement the filtering logic in `Components/Pages/Sidebar.razor`: The complete code for `Sidebar.razor` is available in the GitHub repository at the following link: [`Sidebar.razor`](https://github.com/syncfusion/blazor-showcase-stay-reservation/blob/master/webapp/Stay-Reservation/Components/Pages/Sidebar.razor). You may reuse the full code as needed. @@ -425,16 +426,16 @@ The complete code for `Sidebar.razor` is available in the GitHub repository at t } ``` -Now, whenever a user clicks a checkbox, it triggers the `OnChange` event, which calls the `FloorHandler` method. This method updates the `ResourceQuery` property on the `Service` object, which is used to filter the resources in the scheduler. The `StateChanged` method is called to refresh the scheduler with the new resource data. +When a user clicks a checkbox, it triggers the `OnChange` event, which calls the `FloorHandler` method. This method updates the `ResourceQuery` property on the `Service` object to filter resources in the scheduler. The `StateChanged` method refreshes the scheduler with the new resource data. -Build and run the app by executing the `dotnet watch run`command in the command shell from the `StayReservation` folder. +Build and run the app by executing the `dotnet watch run` command in the command shell from the `StayReservation` folder. -## Implement the Appointment Booking form -Bind the Scheduler's Editor Template to a custom form for creating and editing appointments. This form will include fields for the appointment's subject, start and end times, and a dropdown list for selecting the room. The form will be displayed when a user double clicks on an empty cell in the scheduler or on an existing appointment. The form will be displayed in a popup window. +## Implement the appointment booking form +Bind the Scheduler's Editor Template to a custom form for creating and editing appointments. This form includes fields for the appointment subject, start and end times, and a drop-down list for selecting the room. The form is displayed when a user double-clicks an empty cell in the scheduler or an existing appointment, in a popup window. -We can validate the form fields using the `ValidationMessage` component. The `ValidationMessage` component displays an error message when the validation fails. The `ValidationMessage` component is bound to the `Subject` property of the `AppointmentData` object. The `Subject` property is required, so the `ValidationMessage` component displays an error message when the `Subject` property is empty. +Validate the form fields using the `ValidationMessage` component. The `ValidationMessage` component displays an error message when validation fails. It is bound to the `Subject` property of the `AppointmentData` object, which is required, so an error message appears when the `Subject` property is empty. -We can apply the following code to the `Schedule.razor` file to create the custom form. +Apply the following code to the `Schedule.razor` file to create the custom form. ```html @@ -555,11 +556,11 @@ We can apply the following code to the `Schedule.razor` file to create the custo ``` -More details about editor template can be found in the [Editor Template](https://blazor.syncfusion.com/documentation/scheduler/editor-template#customizing-event-editor-using-template) documentation. +More details about the editor template are available in the [Editor Template](https://blazor.syncfusion.com/documentation/scheduler/editor-template#customizing-event-editor-using-template) documentation. -## Adding Toast Notifications +## Add toast notifications -Integrate `SfToast` for user notifications throughout the application. When a user creates or deletes a reservation, a toast notification will appear. +Integrate `SfToast` for user notifications throughout the application. When a user creates or deletes a reservation, a toast notification appears. ```csharp @@ -567,7 +568,7 @@ Integrate `SfToast` for user notifications throughout the application. When a us ``` -The `OnActionBegin` event of the `SfSchedule` component can be bound to a method that will handle the toast notifications. +Bind the `OnActionBegin` event of the `SfSchedule` component to a method that handles toast notifications. ```csharp public async Task OnActionBegin(ActionEventArgs args) @@ -620,12 +621,12 @@ The `OnActionBegin` event of the `SfSchedule` component can be bound to a method ## GitHub and demo references -The complete code for this example is available in the [GitHub repository](https://github.com/syncfusion/blazor-showcase-stay-reservation). +The complete code for this example is available in the GitHub repository: https://github.com/syncfusion/blazor-showcase-stay-reservation -A demo of this example can be tried in [this link](https://blazor.syncfusion.com/showcase/stay-reservation). +Try the live demo: https://blazor.syncfusion.com/showcase/stay-reservation ## Summary -This guide has demonstrated how to build a functional and interactive stay reservation application. It has shown how to compose a complex UI by combining multiple Syncfusion® Blazor components like the **Scheduler**, **Sidebar**, **AppBar**, **Accordion**, **Inputs**, and **Dropdowns**. +This guide demonstrates how to build a functional and interactive stay reservation application. It shows how to compose a complex UI by combining Syncfusion® Blazor components such as **Scheduler**, **Sidebar**, **AppBar**, **Accordion**, **Inputs**, and **DropDowns**. -Most importantly, a clean state management pattern has been implemented using a singleton service, allowing the components to communicate and share data seamlessly. This architecture is scalable and makes the application easy to maintain and extend with new features. +A clean state management pattern is implemented using a singleton service, allowing the components to communicate and share data seamlessly. This architecture is scalable and makes the application easier to maintain and extend with new features. diff --git a/blazor/visual-studio-code-integration/overview.md b/blazor/visual-studio-code-integration/overview.md index 7564e99ee4..d1e4898248 100644 --- a/blazor/visual-studio-code-integration/overview.md +++ b/blazor/visual-studio-code-integration/overview.md @@ -1,22 +1,19 @@ --- layout: post -title: Syncfusion Blazor Extension for Visual Studio Code | Syncfusion -description: Learn here all about introduction on Syncfusion Blazor extension for Visual Studio Code which made integration made ease. +title: Blazor extension for Visual Studio Code | Syncfusion +description: Overview of Blazor extension for Visual Studio Code that simplifies project setup, code snippets, project conversion, and upgrades for Syncfusion Blazor apps. platform: Blazor -component: Common +control: Common documentation: ug --- # Overview of Blazor Extension for Visual Studio Code -The [Syncfusion® Blazor Extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=SyncfusionInc.Blazor-VSCode-Extensions) simplifies the use of the Syncfusion® Blazor components by configuring the Syncfusion® Blazor NuGet packages and themes. +The [Syncfusion® Blazor extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=SyncfusionInc.Blazor-VSCode-Extensions) streamlines the use of Syncfusion® Blazor components by configuring the required NuGet packages and themes. -The Syncfusion® Blazor Extension provides the following support in Visual Studio Code: +The extension provides the following capabilities in Visual Studio Code: -[Project-Template](create-project): Creates Syncfusion® Blazor applications with required configuration for development with Syncfusion® Blazor component. - -[Code Snippet](code-snippet): Adds a Syncfusion® Blazor component with various features to the Blazor Application's Razor code editor. - -[Convert project](convert-project): Converts an existing Blazor Web Application to a Syncfusion® Blazor Web Application by importing the necessary Syncfusion® NuGet packages. - -[Upgrade project](upgrade-project): Upgrades the existing Syncfusion® Blazor Web Application from one Essential Studio® version to another version. \ No newline at end of file +- [Create project template](create-project): Creates a Syncfusion® Blazor application with the required configuration and dependencies for development. +- [Code snippets](code-snippet): Inserts Syncfusion® Blazor component snippets and common scenarios into the Razor editor. +- [Convert project](convert-project): Converts an existing Blazor application to use Syncfusion Blazor by adding the necessary NuGet packages and resources. +- [Upgrade project](upgrade-project): Upgrades an existing Syncfusion® Blazor application from one Essential Studio® version to another. From a886951a17b72104400222edf84038453b3a733a Mon Sep 17 00:00:00 2001 From: Backiaraj Date: Mon, 27 Oct 2025 18:40:20 +0530 Subject: [PATCH 8/9] Updated the Blazor common UG documentation --- .../code-snippet.md | 44 ++++----- .../convert-project.md | 38 +++---- .../create-project.md | 98 +++++++++---------- .../download-and-installation.md | 67 ++++++------- .../upgrade-project.md | 70 ++++++------- 5 files changed, 155 insertions(+), 162 deletions(-) diff --git a/blazor/visual-studio-code-integration/code-snippet.md b/blazor/visual-studio-code-integration/code-snippet.md index 6f5d20a8bf..f3017f3246 100644 --- a/blazor/visual-studio-code-integration/code-snippet.md +++ b/blazor/visual-studio-code-integration/code-snippet.md @@ -1,47 +1,47 @@ --- layout: post -title: Code Snippets - Blazor Extension Visual Studio Code | Syncfusion -description: Learn here all about how to use code snippet utility of Syncfusion Blazor Extension for Visual Studio Code and much more. +title: Code snippets for the Syncfusion Blazor extension | Syncfusion +description: Learn here about that how to use the code snippet utilities in the Syncfusion Blazor extensions for the Visual Studio Code. Explore here to more details. platform: Blazor -component: Common +control: Common documentation: ug --- # Add Syncfusion® Blazor component in the Blazor application -The Syncfusion® Blazor code snippet utility for Visual Studio Code includes snippets for inserting a Syncfusion® Blazor component with various features into the Blazor Application's Razor code editor. +The Syncfusion® Blazor code snippet utility for Visual Studio Code provides snippets to insert Syncfusion® Blazor components with common features into a Blazor application's Razor code editor. - N> The Syncfusion® Blazor code snippet is available from Essential Studio® 2021 Volume 1 (`v19.1.0.54`). + N> The Syncfusion® Blazor code snippet feature is available from Essential Studio® 2021 Volume 1 (`v19.1.0.54`). ## Add a Syncfusion® Blazor component -The instructions below guide you the process of using the Syncfusion® Blazor code snippet in your Blazor application. +The following steps describe how to use the Syncfusion® Blazor code snippets in a Blazor application. -1. In Visual Studio Code, open an existing Blazor Application or create a new Blazor Application. +1. In Visual Studio Code, open an existing Blazor application or create a new one. -2. Open the razor file that you need and place the cursor in required place where you want to add Syncfusion® component. +2. Open the required Razor file and place the cursor where the Syncfusion® component should be inserted. -3. You can find the Syncfusion® Blazor component with the various features by typing the **sf** word in the format shown below. +3. Type the prefix **sf** and use the following format to discover component snippets and features. ``` sf- - For Example, sfgrid-grouping + For example, sfgrid-grouping ``` -4. Choose the Syncfusion® component and click the **Enter** or **Tab** key, the Syncfusion® Blazor component will be added in the razor file. +4. Select the desired Syncfusion component and press **Enter** or **Tab**. The corresponding component markup is inserted into the Razor file. - ![Code Snippet](images/codesnippet.gif) + ![Animated demo showing insertion of a Syncfusion Blazor code snippet](images/codesnippet.gif) -5. After adding the Syncfusion® Blazor component to the razor file, use the tab key to fill in the required values to render the component with data. You can find the comment section in the code snippet to see what values are required. +5. After inserting the Syncfusion® Blazor component, use the Tab key to navigate placeholders and provide the required values. Review the inline comments in the snippet to identify which values are required. - ![Comment](images/Comment.png) + ![Snippet comments highlighting required placeholders](images/Comment.png) -6. You can also find the Syncfusion® help link at the top of the added snippet to learn more about the new Syncfusion® Blazor component feature. +6. A Syncfusion® help link is included at the top of the snippet to learn more about the inserted component or feature. - ![Help](images/Help.png) + ![Help link shown at the top of the inserted snippet](images/Help.png) ## Configure Blazor application with Syncfusion -The Syncfusion® Blazor snippet simply inserts the code into the razor file. You must configure the Blazor application with Syncfusion® by installing the Syncfusion® Blazor NuGet package, namespace, themes, and registering the Syncfusion® Blazor Service. To configure, follow the steps below: +The Syncfusion® Blazor snippet only inserts code into the Razor file. Configure the Blazor application by adding the required NuGet packages, namespaces, themes, and registering the Syncfusion® Blazor service. Follow these steps: 1. Open the Blazor application file and manually add the required Syncfusion® Blazor individual NuGet package(s) for the Syncfusion® Blazor components as a package reference. Refer to [this section](https://blazor.syncfusion.com/documentation/nuget-packages#benefits-of-using-individual-nuget-packages) to learn about the advantages of the individual NuGet packages. This NuGet package will be automatically restored when building the application. @@ -49,18 +49,18 @@ The Syncfusion® Blazor snippet simply inserts the code into the razor file. You N> Starting with Volume 4, 2020 (v18.4.0.30) release, Syncfusion® provides [individual NuGet packages](https://blazor.syncfusion.com/documentation/nuget-packages) for our Syncfusion® Blazor components. We highly recommend this new standard for your Blazor production applications. -2. To render the Syncfusion® components in your application, open the **~/_Imports.razor** file and add the required Syncfusion® Blazor namespace entries. +2. To render Syncfusion® components, open **~/_Imports.razor** and add the required Syncfusion® Blazor namespace entries. ![Namespace](images/Namespace-Snippet.png) -3. Add the Syncfusion® Blazor [theme](https://blazor.syncfusion.com/documentation/appearance/themes) in the `` element of the **~/Components/App.razor** page for Web App and `` element of the **~/Pages/_Host.html** page for server application and **~/wwwroot/index.html** page for a client application. +3. Add a Syncfusion® Blazor [theme](https://blazor.syncfusion.com/documentation/appearance/themes) in the `` element of **~/Components/App.razor** for Blazor Web App, in **~/Pages/_Host.cshtml** for Blazor Server, and in **~/wwwroot/index.html** for a Blazor WebAssembly (client) application. ![Themes](images/Themes-Snippet.png) -4. Open the **~/Program.cs** file for Web App and server application and client application then register the Syncfusion® Blazor Service. +4. Open the relevant **~/Program.cs** file(s) for Web App and server application and client application and register the Syncfusion® Blazor service. -If you select an **Interactive render mode** as `WebAssembly` or `Auto`, you need to register the Syncfusion® Blazor service in both **~/Program.cs** files of your Blazor Web App. +If the Blazor Web App uses an interactive render mode of `WebAssembly` or `Auto`, register the Syncfusion® Blazor service in both **~/Program.cs** files of the Blazor Web App. - ![Syncfusion Configuration](images/Configuration-Snippet.png) +![Registration of the Syncfusion Blazor service](images/Configuration-Snippet.png) 5. If you installed the trial setup or NuGet packages from nuget.org you must register the Syncfusion® license key to your application since Syncfusion® introduced the licensing system from 2018 Volume 2 (v16.2.0.41) Essential Studio® release. Navigate to the [help topic](https://help.syncfusion.com/common/essential-studio/licensing/overview#how-to-generate-syncfusion-license-key) to generate and register the Syncfusion® license key to your application. Refer to this [UG](https://blazor.syncfusion.com/documentation/getting-started/license-key/overview) topic for understanding the licensing details in Essential Studio® for Blazor. \ No newline at end of file diff --git a/blazor/visual-studio-code-integration/convert-project.md b/blazor/visual-studio-code-integration/convert-project.md index 7f12a59ba0..9b7ea35d4e 100644 --- a/blazor/visual-studio-code-integration/convert-project.md +++ b/blazor/visual-studio-code-integration/convert-project.md @@ -1,41 +1,41 @@ --- layout: post -title: Convert Project - Blazor Extension for Visual Studio Code | Syncfusion -description: Learn here all about how to convert blazor application into syncfusion blazor application using Blazor Extension for Visual Studio Code. +title: Convert a project using the Blazor extension | Syncfusion +description: Learn here about how to convert an existing Blazor application into a Syncfusion Blazor application using the Blazor extension for Visual Studio Code. platform: Blazor -component: Common +control: Common documentation: ug --- # Converting Blazor Extension for Visual Studio Code -The Syncfusion® Blazor conversion is an add-in for Visual Studio Code that converts an existing Blazor application into a Syncfusion® Blazor Web Application by adding the required NuGet packages and themes. +The Syncfusion® Blazor conversion add-in for Visual Studio Code converts an existing Blazor application into a Syncfusion® Blazor web application by adding the required NuGet packages and themes. N> The Syncfusion® Blazor Web Application Project Conversion utility is available from `v17.4.0.39`. -The steps below assist you to using the Syncfusion® Project conversion in your existing Blazor Web Application: +Use the following steps to run the Syncfusion® project conversion in an existing Blazor Web application: -1. Open an existing Blazor Web Application or create a new Microsoft Blazor Web Application in Visual Studio Code. +1. In Visual Studio Code, open an existing Blazor Web application or create a new Blazor Web application. -2. Select **Convert to Syncfusion® Blazor Application...** from the context menu when you right-click on the **Project file** from Explorer (Workspace). Refer the screenshot below. +2. In Explorer (Workspace), right-click the project file and select **Convert to Syncfusion Blazor Application...** from the context menu. Refer the screenshot below. - ![Conversion Add-in](images/Conversion.PNG) + ![Context menu showing Convert to Syncfusion Blazor Application command](images/Conversion.PNG) -3. **Select Blazor Version** (which published in `nuget.org`) from the palette appears. +3. From the Command Palette, choose **Select Blazor Version** (version published on `nuget.org`). - ![Select Blazor Version](images/VersionSelection.PNG) + ![Palette showing selection of Blazor version](images/VersionSelection.PNG) -4. Choose the **Theme** from the palette appears. +4. From the palette, choose the desired Syncfusion theme. - ![Select Themes](images/ChooseThemes.PNG) + ![Palette showing selection of Syncfusion themes](images/ChooseThemes.PNG) -5. The application configured with Syncfusion® Blazor required NuGet packages and themes. +5. The application is configured with the required Syncfusion® Blazor NuGet packages and themes. 6. If you installed the trial setup or NuGet packages from nuget.org you must register the Syncfusion® license key to your application since Syncfusion® introduced the licensing system from 2018 Volume 2 (v16.2.0.41) Essential Studio® release. Navigate to the [help topic](https://help.syncfusion.com/common/essential-studio/licensing/overview#how-to-generate-syncfusion-license-key) to generate and register the Syncfusion® license key to your application. Refer to this [UG](https://blazor.syncfusion.com/documentation/getting-started/license-key/overview) topic for understanding the licensing details in Essential Studio® for Blazor. ## NuGet Packages -Based on the application type, the following NuGet packages are added as NuGet references. +Based on the application type, the following NuGet packages are added as dependencies. | Syncfusion® Blazor NuGet packages | Application type | |---|---| @@ -43,19 +43,19 @@ Based on the application type, the following NuGet packages are added as NuGet r | `Syncfusion.Blazor.PdfViewerServer.Windows` | Syncfusion® Blazor Server App | | `Syncfusion.Blazor.WordProcessor` | Syncfusion® Blazor Server App
Syncfusion® Blazor WebAssembly App
Syncfusion® Blazor WebAssembly App (ASPNET Core hosted)
Syncfusion® Blazor WebAssembly App (Progressive Web Application)| -The NuGet packages added to the application file as follows. +The packages are added to the application as shown below. -![NuGetPackage](images/NuGetPackage.png) +![Project file showing Syncfusion NuGet package references](images/NuGetPackage.png) ## Theme links -While converting the application, the selected Syncfusion® Blazor theme is added in the following location of a Blazor type application. +During conversion, the selected Syncfusion® Blazor theme is added in the following locations based on the application type. | Application type | File location | |---|---| | Syncfusion® Blazor Web App | ~/Components/App.razor | -| Syncfusion® Blazor Server App | {Project location}/Pages//_Host.cshtml | +| Syncfusion® Blazor Server App | {Project location}/Pages/_Host.cshtml | | Syncfusion® Blazor WebAssembly App (ASPNET Core hosted)
Syncfusion® Blazor WebAssembly App (Progressive Web Application)| {Client Project location}/wwwroot/index.html | | Syncfusion® Blazor WebAssembly App | {Project location}/wwwroot/index.html| -![CDNLink](images/CDNLink.png) \ No newline at end of file +![Example showing where the theme link is added in the project](images/CDNLink.png) diff --git a/blazor/visual-studio-code-integration/create-project.md b/blazor/visual-studio-code-integration/create-project.md index 8186468ae2..07d0491e02 100644 --- a/blazor/visual-studio-code-integration/create-project.md +++ b/blazor/visual-studio-code-integration/create-project.md @@ -1,38 +1,38 @@ --- layout: post -title: Create Projects using Project Templates via Extensions | Syncfusion -description: Learn here about how to create syncfusion blazor application using Syncfusion Blazor Extension for Visual Studio Code. +title: Create projects using project templates in VS Code | Syncfusion +description: Learn how to create a Syncfusion Blazor application using the Syncfusion Blazor extension for Visual Studio Code. platform: Blazor -component: Common +control: Common documentation: ug --- -# Creating a Syncfusion® Blazor application +# Create a Syncfusion® Blazor application -Syncfusion® provides the Blazor Template Studio in Visual Studio Code, which allows you to create a Syncfusion® Blazor application with Syncfusion® components. The Syncfusion® Blazor app is created with the required component Syncfusion® NuGet references, namespaces, styles, and component render code. The Template Studio provides an easy-to-use project wizard that walks you through the process of creating an application with Syncfusion® components. +Syncfusion® provides the Blazor Template Studio for Visual Studio Code, which scaffolds a Syncfusion® Blazor application preconfigured with Syncfusion® NuGet packages, namespaces, themes, and component render code. The Template Studio offers a guided wizard to create an application with Syncfusion® components. -N> Blazor project templates from `v17.4.0.39` are supported by the Syncfusion® Visual Studio Code project template. +N> Blazor project templates from version `v17.4.0.39` and later are supported by the Syncfusion Visual Studio Code project template. -The instructions below assist you in creating **Syncfusion® Blazor Applications** using **Visual Studio Code**: +Use the following steps to create Syncfusion® Blazor applications in Visual Studio Code: -1. To create a Syncfusion® Blazor application in Visual Studio Code, open the command palette by pressing **Ctrl+Shift+P**. Search for the word **Syncfusion®** in the Visual Studio Code palette to get the templates provided by Syncfusion®. +1. To create a Syncfusion® Blazor application in Visual Studio Code, open the Command Palette with **Ctrl+Shift+P**. Search for the word **Syncfusion®** in the Visual Studio Code palette to get the templates provided by Syncfusion®. - ![CreateProjectPalette](images/CreateBlazorProjectPalette.png) + ![Command Palette showing Syncfusion commands](images/CreateBlazorProjectPalette.png) -2. Select **Syncfusion® Blazor Template Studio: Launch**, then press **Enter** key. The Template Studio wizard for configuring the Syncfusion® Blazor app will be launched. Provide the Project name and Project path. +2. Select **Syncfusion Blazor Template Studio: Launch**, and press **Enter**. The Template Studio wizard opens to configure the Syncfusion® Blazor app. Enter the project name and project path. - ![TemplateStudioWizard](images/ProjectLocationName1.png) + ![Template Studio wizard with Project name and Project path fields](images/ProjectLocationName1.png) - N> Refer to the .NET SDK support for Syncfusion® Blazor Components [here](https://blazor.syncfusion.com/documentation/system-requirements#net-sdk). + N> For supported .NET SDK versions, see the .NET SDK support for Syncfusion Blazor components in the system requirements [documentation](https://blazor.syncfusion.com/documentation/system-requirements#net-sdk). -3. Select either **Next** or the **Project type** tab. Syncfusion® Blazor project types will be displayed. Choose one of the following Syncfusion® Blazor project types based on the version of the .NET SDK you are using. +3. Select **Next** or the **Project type** tab. The available Syncfusion® Blazor project types are displayed. Choose one based on the .NET SDK version in use. | .NET SDK version | Supported Syncfusion® Blazor Application Type | | ---------------- | -------------------------------------------- | | [.NET 9.0](https://dotnet.microsoft.com/en-us/download/dotnet/9.0), [.NET 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) | Syncfusion® Blazor Web App | | [.NET 9.0](https://dotnet.microsoft.com/en-us/download/dotnet/9.0), [.NET 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) | Syncfusion® Blazor WebAssembly App | - In the **Syncfusion® Blazor Web App** application type, you can configure the following options: + In the **Syncfusion® Blazor Web App** application type, the following options are available:
Category
@@ -55,98 +55,98 @@ The instructions below assist you in creating **Syncfusion® Blazor WebAssembly App** application type, you can choose Progressive Web Application. + In the **Syncfusion Blazor WebAssembly App** project type, choose Progressive Web Application (PWA). - ![ProjectType](images/ProjectTypeDetails1.png) + ![Project type selection showing Blazor WebAssembly and PWA option](images/ProjectTypeDetails1.png) -4. Click either **Next** or the **Controls** tab and select the Syncfusion Blazor components you want to add to your application. +4. Select **Next** or the **Controls** tab, and then choose the Syncfusion® Blazor components to include in the application. - ![Controls Section](images/ControlsSection.png) + ![Controls tab listing Syncfusion Blazor components](images/ControlsSection.png) - Choose the required control(s) by clicking the corresponding control box. + Choose the required control(s) by selecting the corresponding control tiles. - To unselect the added control(s), use either one of the following options: + To unselect added control(s), use one of the following options: **Option 1:** Click the corresponding selected control box. - **Option 2:** Click ‘x’ button for corresponding control in the control list from **Project Details**. + **Option 2:** In **Project Details**, click the ‘x’ next to the corresponding control in the selected controls list. - N> **Note:** Choose at least one control to enable the Features and Configuration tab. + N> Choose at least one control to enable the Features and Configuration tabs. -5. Click either **Next** or the **Features** tab, and you will see the features listed for the selected controls. You can choose the required features. +5. Select **Next** or the **Features** tab to view the available features for the selected controls, and choose the required options. ![FeaturesSection](images/FeaturesSection.png) -6. Click **Next** or the **Configuration** tab to load the Configuration section. You can choose the required (.NET 9.0 and .NET 8.0), themes, https configuration, localization option, authentication type, Blazor Web App, and Blazor Web Assembly application types. +6. Select **Next** or the **Configuration** tab to open the Configuration section. Configure the target .NET version (.NET 9.0 or .NET 8.0), theme, HTTPS configuration, localization, authentication type, and options specific to Blazor Web App or Blazor WebAssembly App types. - Depending on your Syncfusion® Blazor Application Type, refer to the table below for supported authentication types. + Depending on the selected Syncfusion® Blazor application type, the following authentication options are supported: | Syncfusion® Blazor Application Type | Supported Authentication Types | | ------------- | ------------- | - | Syncfusion® Blazor Web App | None and Individual Accounts | - | Syncfusion® Blazor WebAssembly App | None, Individual Accounts and Microsoft Identity Platform | + | Syncfusion® Blazor Web App | None, Individual Accounts | + | Syncfusion® Blazor WebAssembly App | None, Individual Accounts, Microsoft Identity Platform | - If you choose the **Blazor Web App** application type, you can customize the Interactivity type and Interactivity location options. + For the **Blazor Web App** application type, Interactivity type and Interactivity location can be customized. - ![WebAppConfiguration](images/WebApp.png) + ![Configuration panel showing interactivity options for Blazor Web App](images/WebApp.png) - If you choose the **Blazor Web Assembly App** application type, you can customize the Progressive Web Application option. + For the **Blazor WebAssembly App** appllication type, the Progressive Web Application option can be enabled or disabled. - ![WASMConfiguration](images/WebAssembly.png) + ![Configuration panel showing PWA option for Blazor WebAssembly](images/WebAssembly.png) **Project details section** - You can change the configuration details below in the Project Details section to change the application type, remove control(s) from the selected controls, or change the configurations. + Use the Project Details section to change the application type, remove selected control(s), or update configuration options. - ![ProjectDetails](images/ProjectDetailsRightSide.png) + ![Project Details panel showing selected controls and configuration summary](images/ProjectDetailsRightSide.png) -7. Click **Create** button. The Syncfusion® Blazor application has been created. The created Syncfusion® Blazor app has the Syncfusion® NuGet packages, styles, and the render code for the selected Syncfusion® component. +7. Click **Create**. The Syncfusion® Blazor application is created with the required Syncfusion® NuGet packages, styles, and the render code for the selected Syncfusion® components. -8. You can run the application to see the Syncfusion® components. Click **F5** or go to **Run>Start Debugging**. +8. Run the application to view the Syncfusion® components. Press **F5** or select **Run > Start Debugging**. - ![Readme](images/RunProject.png) + ![Running the generated Syncfusion Blazor project in Visual Studio Code](images/RunProject.png) 9. The Syncfusion® Blazor application configures with most recent Syncfusion® Blazor NuGet packages version, selected style, namespaces, selected authentication, and component render code for Syncfusion® components. 10. If you installed the trial setup or NuGet packages from nuget.org you must register the Syncfusion® license key to your application since Syncfusion® introduced the licensing system from 2018 Volume 2 (v16.2.0.41) Essential Studio® release. Navigate to the [help topic](https://help.syncfusion.com/common/essential-studio/licensing/license-key#how-to-generate-syncfusion-license-key) to generate and register the Syncfusion® license key to your application. Refer to this [UG](https://blazor.syncfusion.com/documentation/getting-started/license-key/overview) topic for understanding the licensing details in Essential Studio® for Blazor. -## Syncfusion® integration +## Syncfusion® integration The Syncfusion® Blazor application configures with latest Syncfusion® Blazor NuGet packages, styles, namespaces, and component render code for Syncfusion® components are added in the created application. -### NuGet Packages +### NuGet packages -The `Syncfusion.Blazor` NuGet package will be added as NuGet references for all application types. +The `Syncfusion.Blazor` package is added as a dependency for all project types. ![NuGetPackage](images/NuGetPackage.png) ### Style -The selected theme is added from Syncfusion® NuGet and its reference at these applications locations in Blazor. +The selected theme is added from the Syncfusion® NuGet package and referenced at the following locations. | Application type | File location | |---|---| | Syncfusion® Blazor Web App | ~/Components/App.razor | -| Syncfusion® Blazor WebAssembly App (ASPNET Core hosted)
Syncfusion® Blazor WebAssembly App (Progressive Web Application) | {Client Project location}/wwwroot/index.html | +| Syncfusion® Blazor WebAssembly App (ASP.NET Core hosted)
Syncfusion® Blazor WebAssembly App (Progressive Web Application) | {Client Project location}/wwwroot/index.html | | Syncfusion® Blazor WebAssembly App | {Project location}/wwwroot/index.html| -![CDNLink](images/CDNLink.png) +![Theme reference location examples](images/CDNLink.png) ### Namespaces -The Syncfusion® Blazor namespaces are added in the **`_imports.razor`** file. +The Syncfusion® Blazor namespaces are added in the **`_imports.razor`** file. -![NameSpace](images/NameSpace.png) +![Imports file showing Syncfusion namespaces](images/NameSpace.png) ### Component render code -The Syncfusion® Blazor Calendar, Button, and DataGrid component render code is in the Razor files in the pages folder. The render code is updated in these Razor files. +The Syncfusion Blazor Calendar, Button, and DataGrid component render code is added to the Razor files in the Pages folder. | File name | Code snippet added | |---|---| -| `~/Pages/Home.razor or Index.razor` | ![IndexFileChange](images/IndexFileChange.png) | -| `~/Pages/Counter.razor` | ![CounterPageChange](images/CounterPageChange.png) | -| `~/Pages/FetchData.razor` | ![FetchDataPageChange](images/FetchDataPageChange.png) | \ No newline at end of file +| `~/Pages/Home.razor or Index.razor` | ![Index page updated with Syncfusion components](images/IndexFileChange.png) | +| `~/Pages/Counter.razor` | ![Counter page updated with Syncfusion components](images/CounterPageChange.png) | +| `~/Pages/FetchData.razor` | ![FetchData page updated with Syncfusion DataGrid](images/FetchDataPageChange.png) | diff --git a/blazor/visual-studio-code-integration/download-and-installation.md b/blazor/visual-studio-code-integration/download-and-installation.md index b1d5e7afb6..72f54b239b 100644 --- a/blazor/visual-studio-code-integration/download-and-installation.md +++ b/blazor/visual-studio-code-integration/download-and-installation.md @@ -1,79 +1,72 @@ --- layout: post -title: Download and Installation in Blazor Extension | Syncfusion -description: Learn here more about how to download and install in the Syncfusion Blazor Extension for Visual Studio Code and much more. +title: Download and installation for Blazor VS Code extension | Syncfusion +description: Learn here about how to download and install the Syncfusion Blazor extension for Visual Studio Code to scaffold and manage Syncfusion Blazor applications. platform: Blazor -component: Common +control: Common documentation: ug --- # Download and Installation -Syncfusion® publishes the Visual Studio Code extension in the [Visual Studio Code marketplace](https://marketplace.visualstudio.com/items?itemName=SyncfusionInc.Blazor-VSCode-Extensions). You can either install it directly from Visual Studio Code or download and install it from the Visual Studio Code marketplace. +Syncfusion publishes the Visual Studio Code extension in the [Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items?itemName=SyncfusionInc.Blazor-VSCode-Extensions). Install it directly from Visual Studio Code or download it from the Marketplace and install locally. ## Prerequisites -The following software prerequisites must be installed to install the Syncfusion® Blazor extension, as well as to creating, adding component code, converting, and upgrading Syncfusion® Blazor applications. +Install the following prerequisites to install the Syncfusion® Blazor extension and to create, convert, and upgrade Syncfusion® Blazor applications. -* [Visual Studio Code 1.29.0 or later](https://code.visualstudio.com/download) - -* [Visual Studio 2022 ](https://visualstudio.microsoft.com/vs/) or later - -* [C# Extension](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) +- [Visual Studio Code 1.29.0 or later](https://code.visualstudio.com/download) +- [Visual Studio 2022 ](https://visualstudio.microsoft.com/vs/) or later +- [.NET SDK 8.0 or 9.0](https://dotnet.microsoft.com/download) +- [C# extension]((https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp)). ## Install through the Visual Studio Code Extensions -The instructions below describe the process of installing the Syncfusion® Blazor extensions from Visual Studio Code Extensions. +The steps below describe how to install the Syncfusion® Blazor extension from the Extensions view in Visual Studio Code. 1. Open Visual Studio Code. - 2. Navigate to **View > Extensions**, and the Manage Extensions option will appear on the left side of the window. +3. In the search box, enter Syncfusion Blazor to find the Syncfusion Blazor extension in the Marketplace. -3. By entering the keyword **"Syncfusion® Blazor"** in the search box, you can find the Syncfusion® Blazor Visual Studio Code extension in the Visual Studio Code Marketplace. - - ![Extension](images/Extension.png) + ![Extensions view showing Syncfusion Blazor extension search results](images/Extension.png) -4. Install the **"Blazor VSCode Extensions - Syncfusion"** extension by clicking the **Install** button. +4. Select **Blazor VSCode Extensions - Syncfusion**, and click **Install**. +5. Reload Visual Studio Code after installation by using the **Reload Window** command from the Command Palette. Open the Command Palette with **Ctrl+Shift+P**, then run Reload Window. -5. Reload Visual Studio Code after installation by using the **Reload Window** command in the Visual Studio Code palette. You can open the command palette by pressing **Ctrl+Shift+P** and find the Reload Window from Visual Studio Code commands. - - ![Reload-Window](images/Reload-Window.png) + ![Command Palette highlighting the Reload Window command](images/Reload-Window.png) 6. Now, you can create a new Syncfusion® Blazor application by using the Syncfusion® Blazor extensions from the Visual Studio Code Palette Find the **Syncfusion® Blazor Template Studio: Launch** from Visual Studio Code commands to open the Syncfusion® Blazor Template Studio wizard. - ![CreateProjectPalette](images/CreateProjectPalette.png) + ![Command Palette showing Syncfusion Blazor Template Studio: Launch](images/CreateProjectPalette.png) ## Install from the Visual Studio Code Marketplace -The instructions below describe the process of downloading and installing Syncfusion® Blazor applications from the Visual Studio Code Marketplace. - -1. Open [Syncfusion® Blazor Code Extensions](https://marketplace.visualstudio.com/items?itemName=SyncfusionInc.Blazor-VSCode-Extensions) in Visual Studio Code Marketplace. +The steps below describe how to download and install the extension from the Visual Studio Code Marketplace website. +1. Open the [Syncfusion® Blazor VS Code Extensions](https://marketplace.visualstudio.com/items?itemName=SyncfusionInc.Blazor-VSCode-Extensions) page in the Marketplace. 2. Click Install from Visual Studio Code Marketplace. The browser displays a popup window with information such as **"Open Visual Studio Code"**. When you click Open Visual Studio Code, the [Syncfusion® Blazor Extension](https://marketplace.visualstudio.com/items?itemName=SyncfusionInc.Blazor-VSCode-Extensions) will launch in Visual Studio Code. +3. In Visual Studio Code, click **Install** on the **Blazor VSCode Extensions - Syncfusion** page. +4. Reload Visual Studio Code after installation by using the **Reload Window** command from the Command Palette. Open the Command Palette with **Ctrl+Shift+P**, then run Reload Window. -3. Install the **"Blazor VSCode Extensions - Syncfusion"** extension by clicking the **Install** button. - -4. Reload Visual Studio Code after installation by using the **Reload Window** command in the Visual Studio Code palette. You can open the command palette by pressing **Ctrl+Shift+P** and find the Reload Window from Visual Studio Code commands. - - ![Reload-Window](images/Reload-Window.png) + ![Command Palette highlighting the Reload Window command](images/Reload-Window.png) 5. Now, you can create a new Syncfusion® Blazor application by using the Syncfusion® Blazor extensions from the Visual Studio Code Palette Find the **Syncfusion® Blazor Template Studio: Launch** from Visual Studio Code commands to open the Syncfusion® Blazor Template Studio wizard. - ![CreateProjectPalette](images/CreateProjectPalette.png) + ![Command Palette showing Syncfusion Blazor Template Studio: Launch](images/CreateProjectPalette.png) ## Manually Installing an Extension in Visual Studio Code -The instructions below describe the process of installing the Syncfusion® Blazor extensions manually in visual studio code. -1. Install the extension by downloading it from the Visual Studio Marketplace and then installing it from a local file within VS Code. To do this: Download the **"SyncfusionInc.Blazor-VSCode-Extensions.vsix"** file from the [Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items?itemName=SyncfusionInc.Blazor-VSCode-Extensions). +The steps below describe how to install the Syncfusion Blazor extension manually in Visual Studio Code. -2. In VS Code, go to the Extensions view by clicking on the Extensions icon in the Activity Bar. +1. Download the SyncfusionInc.Blazor-VSCode-Extensions.vsix file from the [Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items?itemName=SyncfusionInc.Blazor-VSCode-Extensions). +2. In Visual Studio Code, open the Extensions view by clicking the Extensions icon in the Activity Bar. - ![ExtensionIcon](images/ExtensionIcon.png) + ![Extensions icon highlighted in the Activity Bar](images/ExtensionIcon.png) -3. Click on the three dots (ellipsis) in the top-right corner and select "Install from VSIX." +3. Click the More Actions (ellipsis) button in the top-right of the Extensions view, and select Install from VSIX. - ![InstallVsix](images/InstallVsix.png) + ![Extensions view More Actions menu with Install from VSIX option](images/InstallVsix.png) -4. Browse to the downloaded SyncfusionInc.Blazor-VSCode-Extensions.vsix file and install it. +4. Browse to the downloaded SyncfusionInc.Blazor-VSCode-Extensions.vsix file and complete the installation. - ![DownloadVsix](images/DownloadVsix.png) + ![File selection dialog for SyncfusionInc.Blazor-VSCode-Extensions.vsix](images/DownloadVsix.png) \ No newline at end of file diff --git a/blazor/visual-studio-code-integration/upgrade-project.md b/blazor/visual-studio-code-integration/upgrade-project.md index 3a0cb7df65..8aff047aa2 100644 --- a/blazor/visual-studio-code-integration/upgrade-project.md +++ b/blazor/visual-studio-code-integration/upgrade-project.md @@ -1,36 +1,36 @@ ---- -layout: post -title: Upgrade Project to Latest Version in Blazor | Syncfusion -description: Learn here all about upgrading project to use latest version using Syncfusion Blazor Extension for Visual Studio Code. -platform: Blazor -component: Common -documentation: ug ---- - -# Upgrading Syncfusion® Blazor application to latest version - -The Syncfusion® Blazor Migration is an add-in for Visual Studio Code allows you to migrate an existing Syncfusion® Blazor Web Application from one Essential Studio® version to another. - - N> The Syncfusion® Blazor Web Application Project Migration utility is available from `v17.4.0.39`. - -The steps below assist you to migrating existing Syncfusion® Blazor Web Application. - -1. Open an existing Syncfusion® Blazor Web Application or create a new Syncfusion® Blazor Web Application in Visual Studio Code. - -2. Select **Migrate Syncfusion® Blazor Application to another version...** from the context menu when you right-click on the **Project file** from Explorer (Workspace). Refer to the screenshot below. - - ![Migration add-in](images/Migration.PNG) - - N> If you have a Syncfusion® Blazor reference in your application, the Migration option will be enabled. - -3. **Select Blazor Version** (which published in `nuget.org`) from the palette appears. - - ![Select Blazor Version](images/VersionSelection.PNG) - -4. The Syncfusion® NuGet packages references and themes are updated to the selected version in the application. - - ![NuGetPackage](images/NuGetPackage.png) - - ![CDNLink](images/CDNLink.png) - +--- +layout: post +title: Upgrade a project to the latest version | Syncfusion +description: Learn here about how to upgrade a project to the latest version using the Syncfusion Blazor extension for Visual Studio Code. Explore to more details. +platform: Blazor +control: Common +documentation: ug +--- + +# Upgrading Syncfusion® Blazor application to latest version + +The Syncfusion® Blazor migration add-in for Visual Studio Code enables upgrading an existing Syncfusion® Blazor web application from one Essential Studio® version to another. + +N> The Syncfusion Blazor Web Application project migration utility is available from version `v17.4.0.39`. + +Use the following steps to migrate an existing Syncfusion® Blazor Web Application. + +1. In Visual Studio Code, open an existing Syncfusion® Blazor Web Application or create a new one. + +2. In Explorer (Workspace), right-click the project file and select **Migrate Syncfusion® Blazor Application to another version...** from the context menu. Refer to the screenshot below. + + ![Context menu showing Migrate Syncfusion Blazor Application command](images/Migration.PNG) + + N> The Migration option is available only when the application already references Syncfusion® Blazor packages. + +3. From the Command Palette, choose **Select Blazor Version** and pick the required Syncfusion® Blazor package version published on `nuget.org`. + + ![Palette showing selection of Syncfusion Blazor version](images/VersionSelection.PNG) + +4. The Syncfusion® Blazor NuGet package references and theme links are updated to the selected version in the application. + + ![Project file updated with new Syncfusion NuGet package versions](images/NuGetPackage.png) + + ![Theme link updated to the selected version](images/CDNLink.png) + 5. If you installed the trial setup or NuGet packages from nuget.org you must register the Syncfusion® license key to your application since Syncfusion® introduced the licensing system from 2018 Volume 2 (v16.2.0.41) Essential Studio® release. Navigate to the [help topic](https://help.syncfusion.com/common/essential-studio/licensing/overview#how-to-generate-syncfusion-license-key) to generate and register the Syncfusion® license key to your application. Refer to this [UG](https://blazor.syncfusion.com/documentation/getting-started/license-key/overview) topic for understanding the licensing details in Essential Studio® for Blazor. \ No newline at end of file From 706b55b45391f8cabeb1fb1003dbb2453896a22a Mon Sep 17 00:00:00 2001 From: Backiaraj Date: Tue, 28 Oct 2025 10:04:15 +0530 Subject: [PATCH 9/9] Cleared CI issues --- .../visual-studio-code-integration/create-project.md | 2 +- .../download-and-installation.md | 10 +++++----- .../visual-studio-code-integration/upgrade-project.md | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/blazor/visual-studio-code-integration/create-project.md b/blazor/visual-studio-code-integration/create-project.md index 07d0491e02..91a06d0173 100644 --- a/blazor/visual-studio-code-integration/create-project.md +++ b/blazor/visual-studio-code-integration/create-project.md @@ -92,7 +92,7 @@ Use the following steps to create Syncfusion®® publishes the Visual Studio Code extension in the [Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items?itemName=SyncfusionInc.Blazor-VSCode-Extensions). Install it directly from Visual Studio Code or download it from the Marketplace and install locally. ## Prerequisites @@ -17,7 +17,7 @@ Install the following prerequisites to install the Syncfusion® Blazor Template Studio: Launch** from Visual Studio Code commands to open the Syncfusion® Blazor Template Studio wizard. - ![Command Palette showing Syncfusion Blazor Template Studio: Launch](images/CreateProjectPalette.png) + ![Command Palette showing Syncfusion Blazor Template Studio](images/CreateProjectPalette.png) ## Install from the Visual Studio Code Marketplace @@ -52,7 +52,7 @@ The steps below describe how to download and install the extension from the Visu 5. Now, you can create a new Syncfusion® Blazor application by using the Syncfusion® Blazor extensions from the Visual Studio Code Palette Find the **Syncfusion® Blazor Template Studio: Launch** from Visual Studio Code commands to open the Syncfusion® Blazor Template Studio wizard. - ![Command Palette showing Syncfusion Blazor Template Studio: Launch](images/CreateProjectPalette.png) + ![Command Palette showing Syncfusion Blazor Template Studio](images/CreateProjectPalette.png) ## Manually Installing an Extension in Visual Studio Code diff --git a/blazor/visual-studio-code-integration/upgrade-project.md b/blazor/visual-studio-code-integration/upgrade-project.md index 8aff047aa2..fa788995fc 100644 --- a/blazor/visual-studio-code-integration/upgrade-project.md +++ b/blazor/visual-studio-code-integration/upgrade-project.md @@ -7,7 +7,7 @@ control: Common documentation: ug --- -# Upgrading Syncfusion® Blazor application to latest version +# Upgrading Syncfusion® Blazor application The Syncfusion® Blazor migration add-in for Visual Studio Code enables upgrading an existing Syncfusion® Blazor web application from one Essential Studio® version to another.