Domanda

Sto usando alcune librerie di terze parti nella mia soluzione e le ho salvate in una cartella separata controllata dal codice sorgente chiamata 3rdParty. Ho aggiunto riferimenti alle DLL in questa cartella dall'IDE VS2008. Tuttavia, trovo che dopo aver salvato, chiuso e aperto la soluzione, i riferimenti sono stati modificati per indicare gli assiemi nel GAC.

La ragione per usare la cartella 3rdParty è che posso facilmente ottenere l'ultima versione da qualsiasi macchina e costruire il mio progetto senza dover installare nulla nella cartella GAC. Come posso ottenere VS2008 per lasciare intatti i miei riferimenti?

Modifica: dopo aver visto la risposta di Benjol, mi chiedevo se avrei potuto usare un manifest dell'assembly per risolvere questo problema. Questo aiuterà a risolvere il mio problema?

È stato utile?

Soluzione

Anche se riuscissi a far sì che VS guardasse nella tua cartella locale, questo non sarebbe di aiuto in fase di esecuzione (intendo F5 / debug runtime), perché .Net cercherà comunque prima nel GAC.

E con riferimento a CopyLocal, AFAIK, che dice al compilatore di copiare una versione della DLL di riferimento nella cartella / bin del progetto, quindi non dovrebbero esserci problemi con percorsi "complicati".

Altri suggerimenti

C'è un " CopyLocal " impostazione per i riferimenti, se si imposta su true e l'impostazione SpecificVersion su false, è necessario utilizzare i riferimenti locali anziché quelli GAC.

Le DLL GAC sono referenziate prima di quelle locali perché sono progettate per essere condivise, ma dovrebbero essere selezionate solo se è stata specificata una versione specifica.

Sarebbe possibile rimuovere questi assembly dal GAC se continuano a causare problemi?

Affinché possa raccogliere l'assembly locale, è necessario accedere alle proprietà del progetto, nella scheda Percorsi di riferimento e aggiungere la directory locale (di terze parti nel proprio caso) all'elenco delle directory. Questo dovrebbe risolvere il tuo problema.

Usiamo un approccio simile qui dove lavoro, sebbene chiamiamo la cartella ReferencedDLLs , e finora non abbiamo avuto problemi con esso.

Una cosa che puoi provare, tuttavia, è modificare il file di progetto per rimuovere il PathHint per i riferimenti in questione, in questo modo VS2008 non sa dove cercare e avvierà il approccio normale.

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