Attualmente sto lavorando su una libreria software che verrà utilizzata per sviluppare le librerie di classi.
-
Queste librerie di classi possono essere eseguite dalla nostra applicazione in esecuzione su quella dell'utente macchina
-
L'applicazione utilizza le stesse dll che il cliente utilizza per sviluppare la loro biblioteca. Il codice utente si aspetta oggetti di determinati tipi che sono fornito dall'applicazione quando è in esecuzione.
-
Un modello di progetto sarà disponibile per i clienti con l'appropriato riferimenti per lo sviluppo della loro libreria
Ho preso in considerazione l'installazione delle DLL nella GAC sulla macchina del cliente. In questo modo avrei potuto creare un evento post build su macchine di sviluppo che avrebbero usato gacutil per installare le DLL quando sono state costruite. Il codice dell'applicazione in fase di sviluppo farebbe riferimento alle DLL nella GAC anziché alle DLL in altri progetti sulla macchina. Ciò rappresenterebbe più strettamente la macchina di un utente quando un dev esegue il debug. Un problema qui è il requisito dei privilegi di amministratore per l'esecuzione di gacutil.
Ho anche preso in considerazione solo la richiesta dei progetti User (creati dai nostri modelli) per fare riferimento alle DLL dalla posizione dell'applicazione installata poiché le dipendenze dll ci sono ANYWAY per l'uso dall'applicazione. Ciò di cui non sono sicuro è come i riferimenti vengono risolti su una macchina utente rispetto a una macchina di sviluppo poiché una macchina di sviluppo non eseguirà necessariamente l'applicazione dalla stessa posizione dell'utente (potrebbe essere appena in esecuzione fuori dalla directory di output di build)
Qualche suggerimento su quale approccio dovrei adottare? Ho letto sull'utilizzo degli assembly nel GAC e sulla creazione di modelli di progetto, ma non ho trovato molto che descriva come distribuire questa configurazione agli utenti (senza creare troppi mal di testa durante lo sviluppo).