Domanda

Ho un progetto archiviato in un repository Subversion.

In questo repository, in una cartella diversa, ho una serie di librerie che utilizzo in molti dei miei progetti. Queste librerie sono archiviate come file binari, ad es. dll, pdb e xml.

Ecco un esempio di layout:

<repo-url>
    \Libraries
        \SQLite
        \SystemHooks
        \Moq

Nel progetto dell'applicazione, aggiungo un " libs " , quindi aggiungi una proprietà di riferimento svn: externals a quella directory per estrarre le librerie di cui ho bisogno.

Ad esempio, per questo progetto a cui sto lavorando ora, che ha sollevato questa domanda, ho bisogno della libreria SystemHooks, quindi nella struttura delle cartelle del mio progetto di app, ora appare così:

SketchingMode         <-- solution folder, other projects here as well
    SketchingMode     <-- app project folder
        libs
            SystemHooks

La cosa bella di questo è che posso aggiornare più facilmente le librerie e usare semplicemente l'identificatore -rXYZ per la definizione degli esterni per evitare di inserire versioni più recenti di quelle che sono pronto ad accettare, e ho ancora una sola copia di ogni file / versione nel mio repository.

La cosa brutta, in questo caso particolare, è che una delle DLL nella directory SystemHooks (2 se voglio anche il pdb) deve essere copiata nella directory di output, a cui non fa riferimento il progetto.

I riferimenti funzionano normalmente, ma una volta che taggo uno dei file in questa directory come " Contenuto " e " Copia sempre " oppure " Copia se più recente " ;, allora anche la struttura della directory libs e SystemHooks viene copiata nella directory di output.

In quanto tale, dopo una compilazione, la mia struttura di directory su disco appare così:

SketchingMode         <-- solution folder, other projects here as well
    SketchingMode     <-- app project folder
        libs
            SystemHooks
        bin
            Debug               <-- main build output here
                libs
                    SystemHooks <-- 1-2 files in here

L'unico modo per evitarlo è utilizzare i passaggi post-build e aggiungere semplicemente le istruzioni di copia necessarie? O posso in qualche modo modificare il file di progetto per evitare di copiare l'intera struttura in questo modo?

Giusto per chiarire, nella directory bin \ Debug, non voglio un altro livello di libs \ SystemHooks lì dentro e tutti i file attualmente in fase di copia nella cartella bin \ Debug \ libs \ SystemHooks devono essere copiato nella cartella bin \ Debug invece.

È stato utile?

Soluzione

Che ne dici di estrarre la directory libs al livello della soluzione piuttosto che al progetto? Questo è ciò che facciamo poiché le assemblee delle biblioteche tendono ad essere utilizzate da più progetti; posizionarsi direttamente nella directory di un progetto non costituirebbe una risorsa altamente condivisibile.

SketchingMode solution
  SketchingMode proj
    bin
      Debug
      Release
  Libs
    SystemHooks
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top