Nastavení Console Applications v Xperience by Kentico

16.08.2024
Model.AuthorName
Milan Sustek

🚀 K čemu slouží integrace Console Applications v Kentico?

Nový design, upgrade systému a další podstatné změny jsou přirozenou součástí jakéhokoliv podniku. Abychom proces přenášení dat s tím spojený udělali co nejjednodušší, používáme právě Console Applications.

Tyto nástroje umí:

  • Automatizovat komplexní procesy
  • Spravovat velké objemy dat efektivně
  • Poskytovat robustní mechanizmy v řešení errorů

Ve zkratce, Console Applications zjednodušují jakoukoliv práci a údržbu dlouhodobých projektů pro naše klienty. Šetří tak přímo náš čas a peníze klientovi.
 

🛠️ Rozsáhlá navigace v Kentico SDK

Oficiální dokumentace od Kentico obsahuje článek o plném využití Kentico SDK v rámci externích aplikací. Zahrnuje web i console applications. Aktuálně se vám ale může stát, že po následování všech vypsaných kroků narazíte na error. V tomto článku navážu na aktuální řešení a poskytnu dodatečné informace, které zajistí ještě hladší proces celé integrace.

1. krok: Vytvořte New Console Application

Začneme vytvořením nové console application. Jednoduše spuštěním následujícího příkazu:
dotnet new console -n KenticoConsoleApplication

2. krok: Nastavení Database Connection String

Nastavení Database Connection String je jednoduchý proces, jednoduše vytvořte nový soubor s názvem appsettings.json a zkopírujte do něj connection string vašeho webového projektu. Váš appsettings.json soubor by měl vypadat takto:
{
  "ConnectionStrings": {
    "CMSConnectionString": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=DancingGoat14;Integrated Security=True;Persist Security Info=False;Connect Timeout=60;Encrypt=False;Current Language=English;"
  }
}

3. krok: Instalace the Kentico Xperience NuGet Package

Jakmile jste nastavili connection string, dalším krokem je instalace, který poskytuje potřebné knihovny pro práci s aplikací Kentico v console application.

Instalovat ho můžete spuštěním příkazu níže v Package Manager Console:
dotnet add package Kentico.Xperience.Core

Tím se do vašeho projektu přidají knihovny Xperience, které vám umožní programově pracovat s daty DXP.

4. krok: Inicializace Xperience Application

Po instalaci Kentico Xperience NuGet package je finálním krokem inicializace Xperience application v rámci console projektu. To zajistí, že jsou všechny potřebné komponenty správně nakonfigurované před tím, než začnete interagovat s daty CMS.

Za tímto účelem přidejte do souboru Program.cs následující kód:
using CMS.DataEngine;

CMSApplication.Init();

Console.WriteLine("Xperience by Kentico successfully initialized!");

Podle dokumentace by odteď měly Console Applications v pořádku fungovat. Samotné spuštění Console Applications může ale skončit errorem:
CMS.DataEngine.ApplicationInitException: Cannot access the database specified by the 'CMSConnectionString' connection string. Please install the database externally and set a correct connection string.

Chcete-li rychle zkontrolovat aktuální connection string, použijte:
Console.WriteLine($"CMS connection string: {ConnectionHelper.ConnectionString}");

Bohužel se objevuje další výjimka:
 CMS.Core.ServiceResolutionException: Resolution of 'CMS.Core.IConnectionStringService' failed with the following error: IoC container cannot be used for service resolution because it was not initialized yet.

Abychom to vyřešili, musíme nejprve předinicializovat Xperience application:
CMSApplication.PreInit(initializeContainer: true);

Pokud CMSConnectionString zůstává prázdný, přestože je zadán v souboru appsettings.json, je to pravděpodobně způsobeno tím, že IConfiguration není správně nastaven. Chcete-li to vyřešit, přidejte balíček 'Microsoft.Extensions.Configuration.Json' Nuget package:
dotnet add Microsoft.Extensions.Configuration.Json

A ručně nakonfigurujte IConfiguration pomocí:
Service.Use<IConfiguration>(new ConfigurationManager().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json"));

Tímto posledním krokem jsou Console Applications připraveny pro váš Kentico projekt. Doufám, že jsem vám pomohl ušetřit čas a úsilí.
 
Od 5. 9. 2024 byla dokumentace pro Console Applications integraci rozšířena a hotfix, který celý set-up zdokonalil byl vydán! Děkujeme týmu Kentico za poskytnutý hotfix. 😊
 

Celé řešení najdete na Githubu: https://github.com/BiQ-Bluesoft/xperience-by-kentico-console-application