Domanda

Utilizzando VS2005 e VB.NET.

Ho un progetto che è un'API per un archivio dati che ho creato.Una volta compilato crea api.dll.

Ho un secondo progetto nella stessa soluzione che ha un riferimento al progetto API che, una volta compilato, creerà wrapper.dll.Si tratta fondamentalmente di un wrapper per l'API specifico di un'applicazione.Quando uso wrapper.dll in quell'altra applicazione, devo copiare wrapper.dll E api.dll alla mia nuova applicazione.Come posso ottenere il progetto wrapper per compilare il file api.dll in sé stesso in modo che ne abbia solo uno dll per spostarsi?

È stato utile?

Soluzione

@Jas, è una funzionalità speciale in Visual Studio.La procedura è delineata in questo post sul blog, chiamato "Condivisione di un file chiave con un nome sicuro tra progetti".L'esempio riguarda la condivisione di file con chiavi con nome sicuro, ma funzionerà per qualsiasi tipo di file.

In breve, fai clic con il pulsante destro del mouse sul tuo progetto e seleziona "Aggiungi elemento esistente".Passare alla directory dei file che si desidera collegare ed evidenziare il file o i file.Invece di premere semplicemente "Aggiungi" o "Apri" (a seconda della versione di Visual Studio), fai clic sulla piccola freccia rivolta verso il basso sul lato destro del pulsante.Vedrai le opzioni "Apri" o "Collega file" se utilizzi Visual Studio 2003, oppure "Aggiungi" o "Aggiungi come collegamento" con il 2005 (non sono sicuro del 2008).In ogni caso scegliete quello che prevede la parola “Link”.Quindi il tuo progetto farà essenzialmente riferimento al file: sarà accessibile sia dal progetto originale in cui si trovava sia dal progetto a cui lo hai "collegato".

Questo è un modo conveniente per creare un assembly che contenga tutte le funzionalità di wrapper.dll e api.dll, ma dovrai ricordarti di ripetere questa procedura ogni volta che aggiungi un nuovo file ad api.dll (ma non wrapper. dll).

Altri suggerimenti

C'è un modo più semplice.Crea semplicemente scorciatoie (chiamate file collegati in Visual Studio-ese) nel tuo progetto wrapper.dll che puntano ai file di origine in api.dll.Ciò compilerà la tua fonte direttamente in wrapper.dll.

Probabilmente dovrai utilizzare uno strumento, come ILMerge, per unire i due gruppi.

Penso che potresti compilare api.dll come risorsa in wrapper.dll.Quindi accedi manualmente a quella risorsa da api.dll e caricala manualmente.Ho caricato manualmente gli assembly dal disco, quindi caricarne uno da uno stream non dovrebbe essere diverso.

Proverei a includere la DLL nel tuo progetto come file, in modo simile a includere un file di testo o xml (oltre al riferimento al progetto per la compilazione).Quindi avrei impostato l'azione di build su "risorsa incorporata". All'interno di Wrapper.dll, userei l'oggetto Assembly per accedere api.dll proprio come qualsiasi altra risorsa incorporata.Dovrai quindi caricare anche l'assembly utilizzando Assembly.Load http://msdn.microsoft.com/en-us/library/system.reflection.assembly.load.aspx

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