Nop4.40.3: differenze tra le versioni

Da Webmobili Wiki.
Riga 55: Riga 55:
* Non ci saranno tutti i plugin, in tal caso cliccare su '''ricaricare la lista di plugin''', la soluzione si chiuderà da sola, ma al successivo login la lista dovrebbe essere aggiornata.
* Non ci saranno tutti i plugin, in tal caso cliccare su '''ricaricare la lista di plugin''', la soluzione si chiuderà da sola, ma al successivo login la lista dovrebbe essere aggiornata.
* Aggiornare tutti i pacchetti nuGet della Solution che abbiano un update minor (dalla seconda cifra in poi)
* Aggiornare tutti i pacchetti nuGet della Solution che abbiano un update minor (dalla seconda cifra in poi)
* Creazione di '''IWMCoreModelFactory''' per le chiamate alla WMCore.
** INTERFACCIA: creare <code>Presentation\Nop.Web\Factories\IWMCoreModelFactory.cs</code> così <syntaxhighlight lang="c#">using GPC.WM_Core;
namespace Nop.Web.Factories {
  public interface IWMCoreModelFactory {
    WMRetriever WMCore { get; }
  }
}</syntaxhighlight>
** IMPLEMENTAZIONE: creare <code>Presentation\Nop.Web\Factories\IWMCoreModelFactory.cs</code> così <syntaxhighlight lang="c#">using GPC.WM_Core;
using Microsoft.Extensions.Configuration;
namespace Nop.Web.Factories {
  public class WMCoreModelFactory : IWMCoreModelFactory {
    public WMRetriever WMCore { get; } = null;
    public WMCoreModelFactory(IConfiguration configuration) {
      WMCore = new WMRetriever(
        configuration.GetSection("WMConnectionStrings")["Designbest"],
        configuration.GetSection("WMConnectionStrings")["Designbest"],
        configuration.GetSection("WMConnectionStrings")["Trovaprodotti"],
        configuration.GetSection("WMApplicationSettings")["ResourcesPath"],
        "Test_WM47");
    }
  }
}</syntaxhighlight>
** BINDING: comunicare la sua esistenza al framework modificando <code style="color:red;font-weight:bold;">Presentation\Nop.Web\Startup.cs</code> aggiungendo una riga a ConfigureServices() così <syntaxhighlight lang="c#">        public void ConfigureServices(IServiceCollection services)
        {
            // aggiunta di IWMCoreModelFactory
            services.AddSingleton<IWMCoreModelFactory, WMCoreModelFactory>();
            services.ConfigureApplicationServices(_configuration, _webHostEnvironment);
        }</syntaxhighlight>

Versione delle 17:17, 1 giu 2021

Installare Nop 4.40.3

In questa guida saranno evidenziati in rosso tutti i file del core di Nop che verranno toccati.

Operazioni sul DB

  • Creare un dump del database di produzione (Nop 4.3)
  • Ripristinarlo
  • Per ripristinare l'utente wmuser è necessario disassociarlo dal catalogo fulltext
  • Da SQL Management Aprire Storage -> Fulltext Catalogs -> nopCommerceFullTextCatalog, nella tab General impostare come Owner => dbo
  • Eliminare l'utente wmuser
  • Ri-mappare l'utente wmuser sul database nuovo
  • Aprire di nuovo Storage -> Fulltext Catalogs -> nopCommerceFullTextCatalog, nella tab General inserire come Owner => wmuser
  • Aprire di nuovo Storage -> Fulltext Catalogs -> nopCommerceFullTextCatalog, nella tab Tables/Views, pannello Eligible columns impostare italian per tutti i campi

Configurazione della Solution

  • Aggiornare i file Presentation\Nop.Web\App_Data\dataSettings.json e Presentation\Nop.Web\App_Data\appsettings.json
  • Copiare i plugin di terze parti nella cartella Plugins\Nop.Plugin.Compiled
  • Aggiungere il seguente codice nei build events => post build event progetto Nop.Web
    xcopy /y /E $(SolutionDir)Plugins\Nop.Plugin.Compiled $(SolutionDir)Presentation\Nop.Web\Plugins
    per copiare i plugin compilati (7spikes & co) nel corretto folder durante il build.
  • Creare dal Configuration Manager una nuova Solution Configuration chiamata ReleaseTest
  • Tasto destro sul web.config e cliccare su Add Configs Transform per creare i web.Release.config e web.ReleaseTest.config
    • Nel web.config aggiungere la variabile d'ambiente ASPNETCORE_ENVIRONMENT con valore Development sotto la sezione aspNetCore
      <environmentVariables>
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
      </environmentVariables>
      
    • Nel web.ReleaseTest.config mettere il valore Testing
      <environmentVariables>
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Testing" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
      </environmentVariables>
      
    • nel web.Release.config mettere il valore Production
      <environmentVariables>
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
      </environmentVariables>
      
  • Dalle proprietà del progetto Nop.Web andare sulla tab Build, selezionare la configurazione Release e aggiungere il simbolo condizionale OFFICIAL
  • Configuriamo l'applicazione in modo che cambi file di configurazione a seconda della Solution Configuration selezionata
    • In Libraries\Nop.Data\NopDataSettingsDefaults.cs cambiare l'assegnamento di FilePath con quanto segue
              public static string FilePath =>
      #if DEBUG
                  "~/App_Data/dataSettings.development.json";
      
      #elif !OFFICIAL
                  "~/App_Data/dataSettings.testing.json";
      
      #else
                  "~/App_Data/dataSettings.json";
      
      #endif
      
    • In Libraries\Nop.Services\Configuration\NopConfigurationDefaults.cs cambiare l'assegnamento di AppSettingsFilePath con quanto segue
              public static string AppSettingsFilePath =>
      #if DEBUG
                  "App_Data/appsettings.development.json";
      
      #elif !OFFICIAL
                  "App_Data/appsettings.testing.json";
      
      #else
                  "App_Data/appsettings.json";
      
      #endif
      
  • Addare alla Solution (cartella Libraries) i progetti GenericUtilites, WM4Search, WM_Core e USO
  • Runnando la Solution dovrebbe partire con tutti i plugin disabilitati. Una volta entrati in admin è possibile vederli dall'elenco e installarli.
  • Non ci saranno tutti i plugin, in tal caso cliccare su ricaricare la lista di plugin, la soluzione si chiuderà da sola, ma al successivo login la lista dovrebbe essere aggiornata.
  • Aggiornare tutti i pacchetti nuGet della Solution che abbiano un update minor (dalla seconda cifra in poi)
  • Creazione di IWMCoreModelFactory per le chiamate alla WMCore.
    • INTERFACCIA: creare Presentation\Nop.Web\Factories\IWMCoreModelFactory.cs così
      using GPC.WM_Core;
      
      namespace Nop.Web.Factories {
        public interface IWMCoreModelFactory {
          WMRetriever WMCore { get; }
        }
      }
      
    • IMPLEMENTAZIONE: creare Presentation\Nop.Web\Factories\IWMCoreModelFactory.cs così
      using GPC.WM_Core;
      using Microsoft.Extensions.Configuration;
      
      namespace Nop.Web.Factories {
        public class WMCoreModelFactory : IWMCoreModelFactory {
          public WMRetriever WMCore { get; } = null;
      
          public WMCoreModelFactory(IConfiguration configuration) {
            WMCore = new WMRetriever(
              configuration.GetSection("WMConnectionStrings")["Designbest"],
              configuration.GetSection("WMConnectionStrings")["Designbest"],
              configuration.GetSection("WMConnectionStrings")["Trovaprodotti"],
              configuration.GetSection("WMApplicationSettings")["ResourcesPath"],
              "Test_WM47");
          }
        }
      }
      
    • BINDING: comunicare la sua esistenza al framework modificando Presentation\Nop.Web\Startup.cs aggiungendo una riga a ConfigureServices() così
              public void ConfigureServices(IServiceCollection services)
              {
                  // aggiunta di IWMCoreModelFactory
                  services.AddSingleton<IWMCoreModelFactory, WMCoreModelFactory>();
                  services.ConfigureApplicationServices(_configuration, _webHostEnvironment);
              }