(3) Percorso per i componenti privati

L'esempio Client descritto in precedenza presenta un notevole svantaggio: sia Client.exe che Stringer.dll devono risiedere nella stessa directory. In realtà, è spesso utile utilizzare invece una struttura di directory per la gestione dei componenti. In .NET Framework è disponibile un meccanismo di configurazione che consente agli amministratori di specificare una directory dalla quale caricare i componenti privati.

Realizzata partendo dal precedente esempio Client, nella sottodirectory 3_SimplePath è presente una versione del programma che utilizza una directory privata. Il codice sorgente è lo stesso, tuttavia il processo di generazione è stato modificato a titolo esemplificativo in modo che Stringer.dll venga generato nella sottodirectory Stringer:

csc /target:library /out:Stringer\Stringer.dll  
   ... Stringer\Stringer.cs
csc /reference:Stringer\Stringer.dll ... Client.cs

Mentre l'opzione di compilazione /reference: consente di individuare un componente in una sottodirectory durante la compilazione del programma, in fase di esecuzione è necessario un file di configurazione dell'applicazione basato su XML per supportare i componenti che si trovano in altre directory. Per i file eseguibili del client, come quelli trattati in questa esercitazione, il file di configurazione si trova nella stessa directory del file eseguibile e ha lo stesso nome completo del file eseguibile con un'ulteriore estensione CONFIG. Nel file Client.exe.config di esempio viene specificato un tag privatePath:

Listato 1. File di configurazione per Client.exe (Client.exe.config)

<configuration>   
  <runtime>
    <assemblyBinding
       xmlns="urn:schemas-microsoft-com:asm.v1">
       <probing privatePath="Stringer"/>
    </assemblyBinding>
  </runtime>
</configuration>

Se questo file di configurazione viene inserito nella stessa directory del file eseguibile, nell'ambiente .NET viene utilizzato il tag privatePath in fase di esecuzione per determinare in quale percorso cercare i componenti, oltre alla ricerca eseguita nella directory dell'applicazione.

**Nota   **Quando si carica un assembly, nell'ambiente runtime viene eseguita la ricerca anche del percorso privato che corrisponde al nome dell'assembly.

Vedere anche

Distribuzione di applicazioni con percorsi privati | (4) Un componente condiviso | (5) Controllo delle versioni dei componenti | Riepilogo della distribuzione di package | Appendice A: ulteriori informazioni sulla creazione di package e sulla distribuzione | Appendice B: strumenti per la creazione di package e per la distribuzione