Come fare riferimento a assembly condivisi che sono ancora in fase di sviluppo (.NET)

StackOverflow https://stackoverflow.com/questions/1422899

  •  07-07-2019
  •  | 
  •  

Domanda

Sono responsabile dello sviluppo e della manutenzione di una serie di assiemi di framework comuni che vengono utilizzati per creare le applicazioni dei nostri prodotti. Questi assiemi sono relativamente nuovi e in uno stato di flusso quando vengono implementate nuove funzionalità, ecc. Di conseguenza, non è insolito che vengano ricostruiti e ridistribuiti in qualche modo frequentemente. Mi aspetto che questo diminuisca quando le assemblee sono stabilizzate, ma è quello che è oggi.

In questo momento, gli assembly vengono inseriti in una cartella comune in cui i progetti di sviluppo possono fare riferimento agli stessi assembly. Applicare gli aggiornamenti è semplice come sostituire i file e i progetti di sviluppo raccolgono automaticamente le modifiche al successivo caricamento e creazione.

Il problema che ho è che potremmo avere diversi "strati". di assembly basati sul framework: ad esempio, abbiamo una libreria Core condivisa da tutte le applicazioni e una libreria Server che fa riferimento a Core ed è condivisa da tutte le applicazioni Server. Tutte le dipendenze devono anche essere ricostruite ogni volta che gli assiemi di framework vengono aggiornati, rendendo questo un compito molto grande. Non credo di poter usare GAC perché ciò richiederebbe che tutti gli sviluppatori aggiornino i loro sistemi ogni volta che viene rilasciata una nuova versione.

Ho esaminato le Norme del publisher, ma ho dei dubbi sul fatto che ciò risolverà il mio problema per alcuni motivi:

  • Per uno, non voglio ricreare il file ogni volta che ricostruisco i miei assemblaggi di framework: c'è un modo per automatizzare questo processo?

  • Non mi è chiaro se si richiede che le assemblee vadano nel GAC. Come ho detto, non voglio forzare i miei sviluppatori a reinstallare, aggiornare, ecc. Ogni volta che rilasciamo una nuova versione degli assembly.

  • Non ho alcun controllo sull'impostazione e la configurazione della rete, quindi è necessario evitare l'intera "fiducia" problema inserendo i file in una condivisione di rete. Inoltre, molti dei nostri sviluppatori lavorano a volte connessi e vorremmo che i file fossero disponibili quando venivano disconnessi.

L'obiettivo sarebbe quello di rendere trasparente l'aggiornamento di questi assembly ai nostri sviluppatori di applicazioni che li stanno consumando. Indubbiamente installeremo questi assembly nel GAC sul computer di destinazione quando l'applicazione è installata, ma non vogliamo farlo per scopi di sviluppo. Non è inoltre ragionevole includere i progetti nella soluzione di ciascuna applicazione perché sono sviluppati da team diversi.

Non riesco a immaginare di essere solo in questi requisiti e spero che qualcuno possa condividere la propria esperienza e saggezza per guidarmi verso una soluzione. Grazie!

È stato utile?

Soluzione 2

NuGet ha risolto questo problema. Distribuendo gli assembly, i framework, ecc. Condivisi come pacchetti NuGet da un repository privato sulla nostra rete, possiamo facilmente pubblicare gli aggiornamenti e farli applicare al codice client come appropriato.

Altri suggerimenti

Non è necessario installare gli assembly nel GAC: nulla nella configurazione richiede questo.

Il problema principale qui è assicurarsi che un'assemblea costringa a ricostruire tutte le sue dipendenze e che tutte queste siano collocate in una posizione condivisa.

L'opzione più semplice qui sarebbe probabilmente quella di avere un server di build che ricostruisca tutto ogni volta che uno degli assembly condivisi viene aggiornato. Ciò ha anche il vantaggio di eseguire potenzialmente altri "script". sulla build, come fare metriche di codice, analisi di codice statico, ecc., ogni volta che una build viene archiviata.

Puoi quindi fare in modo che il server di compilazione copi tutto in una posizione condivisa. Se i progetti fanno riferimento dalla posizione condivisa e dicono esplicitamente di non limitarsi a una versione specifica, tutto dovrebbe funzionare correttamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top