Skip to main content

Risoluzione delle dipendenze di libreria

Per la risoluzione delle dipendenze della libreria, il grafico completo delle dipendenze viene determinato da Libraries.json elenco di riferimenti e scritto a Libraries.lock.json file di blocco.

La risoluzione delle librerie viene eseguita alla prima creazione di una libreria. Successivamente, viene attivata esplicitamente dall'utente. Dopo la creazione iniziale di un progetto di dispositivo, la risoluzione delle librerie viene eseguita automaticamente una sola volta, ma mai più in modo automatico, nemmeno all'apertura del progetto. Di conseguenza, le modifiche al grafico delle dipendenze non passano mai inosservate.

Per risolvere le librerie, si utilizza il Librerie Resolve comando nel menu contestuale del Libraries.json file. I riferimenti vengono presi in considerazione quando non hanno ancora una risoluzione o quando la loro risoluzione memorizzata non corrisponde più alla definizione nel Libraries.json file.

IL Risolvi tutte le librerie Il comando ricostruirà l'intero grafico.

Processo di risoluzione

Il grafico delle dipendenze viene creato in modo ricorsivo. Per ogni libreria referenziata, vengono risolti anche i relativi riferimenti. In questo modo, il grafico viene gradualmente espanso fino a determinare tutte le dipendenze

Quando si fa riferimento a una libreria tramite un modello di versione, durante la risoluzione vengono esaminate tutte le fonti di libreria disponibili al fine di determinare la versione più corrispondente. Le fonti includono la cache della libreria e tutti i repository di libreria configurati.

Priorità di risoluzione:

Un riferimento viene risolto secondo una gerarchia predefinita. Prevale la prima regola applicabile.

  1. Riferimento tramite un percorso relativo

  2. Riferimento con una versione fissa della libreria

  3. Riferimento con schema di versione: viene selezionata la versione più recente corrispondente.

  4. Segnaposto con una sovrascrittura in Libraries.jsonplaceholderOverrides sezione)

  5. Segnaposto risolti da un componente o un'estensione di CODESYS 4

  6. Segnaposto con una risoluzione univoca dalle descrizioni del dispositivo

    Percorso nella descrizione del dispositivo: library-management\placeholder-libraries\

Errori e conflitti

Se si verifica un conflitto durante la risoluzione della libreria, il processo viene interrotto con un errore. In questo caso, non viene creato alcun lockfile

Si verifica un conflitto nei seguenti casi:

  • La stessa libreria è risolta in diverse versioni fisse.

  • Per lo stesso namespace vengono risolte librerie diverse.

  • Una libreria viene referenziata simultaneamente tramite una versione fissa e tramite un modello di versione che non corrisponde.

  • Descrizioni di dispositivi diversi risolvono lo stesso segnaposto in modo contraddittorio.

    Questo caso non si verifica quando si esegue una sovrascrittura del segnaposto nel Libraries.json Il file definisce già in modo univoco il segnaposto. 

Verrà emesso un messaggio di errore anche quando una libreria necessaria non può essere risolta. Se una libreria facoltativa non può essere risolta, viene generato solo un messaggio diagnostico. In questo caso, la libreria viene ignorata e la risoluzione prosegue.

Dopo la risoluzione

Dopo la risoluzione, le librerie saranno rese accessibili. Una libreria con un percorso relativo viene controllata per verificarne la validità. Se il percorso punta a un progetto di libreria sorgente, il progetto verrà caricato nell'area di lavoro come progetto modificabile. Tutte le librerie rimanenti verranno ripristinate dalle rispettive sorgenti nella cache delle librerie, a condizione che non siano già presenti. Il percorso nel file di blocco punterà quindi alla posizione della libreria nella cache.