Ho avuto di nuovo lo stesso problema oggi.
Prima di tutto, grazie a Jon Cage e all'articolo collegato nel suo post su questo thread, see above (or below). 1 !!! Ha risolto il mio problema.
Ma perché odio le cose come toggle them as appropriate for your case
, il che significa nient'altro che trial and error
, ho fatto alcuni test perché ho 2 soluzioni con un buon numero di progetti C++/CLI in ciascuna.
Ecco il mio consiglio e la spiegazione per questo:
per tutti 'auto creati' assemblee (che hanno 'copia locale' impostata su true):
"Proprietà comuni" -> "quadro e Riferimenti "->" Riferimenti "-> Seleziona un riferimento.
Nella finestra delle proprietà a destra -> "Build Proprietà" -> "Utilizza dipendenze nel costruire"
- (copiato dal articolo collegato MSDN forum del post di Jon Cage)
Impostare questo parametro Use Dependencies In Build
a "falso" deselezionando.
Funziona come "inoltro di riferimento", vedere l'esempio di seguito.
background tecnico:
-> significa 'Riferimenti'
Metodo 1:
nella mia soluzione SwCore:
A.1.1 network->tools
, A.1.2 network->basics
.
A.2.1 tools->basics
.
A.3.1 drives->basics
, A.3.2 drives->tools
, A.3.3 drives->network
A.4.1 ...
con "Usa dipendenze nel costruire" impostate su true, l'A.1.2 di riferimento può essere omesso, in quanto è incluso in A.2.1.
tutti i file vengono creati in swcore \ release \
problema ==:
in soluzione DDI:
B.1.1 DDI_hardware->DDI_job
, B.1.2 DDI_hardware->drives
B.2.1 DDI_job->basics
, B.2.2 DDI_job->tools
,
DDI_job
viene creato in DDI \ Release \ e con "U.D.InBuild" impostato su true, include basics
.
DDI_hardware
viene creato ... e con "U.D.InBuild" impostata su true, esso include DDI_job->basics
.
DDI_hardware fa anche riferimento a Nozioni di base da SwCore \ Release \
== >> doppio riferimento a elementi di base e altri. VS vede 2 file e non può rendersi conto che è lo stesso contenuto.
Metodo 2:
A.1.1 network->tools
, A.1.2 network->basics
.
A.2.1 tools->basics
.
con "U.D.InBuild" impostato su FALSE, il riferimento A.1.2 NON può essere omesso, poiché non viene inoltrato da A.2.1.
opere ==, perché nessuna assemblea conterrà altre dipendenze più profondi, quindi non ci sarà conflitto.
BTW: Questo ti obbliga a specificare tutti i riferimenti necessari per ciascun progetto, in modo da avere anche una panoramica di ciò che stai utilizzando nel tuo progetto.
Ultima info: Non posso dire per certo, se la mia spiegazione è corretta. Può darsi. altro può confermare.
Beh, questa non funziona ... devono fare anche "Usa ..." proprietà falsi per riferimento * .dll..But in quella situazione non è possibile in grado di utilizzare tale * .dll ... Non è soluzione elagante ma quello che ho trovato è creare un progetto * .dll vuoto aggiungere un riferimento a tale * dll (nella mia situazione aggiungere dll log4.net a quel progetto fittizio). Poi se volevo usare quella dll (log4.net) da un altro progetto aggiungi il progetto dummy dll invece del riferimento diretto alla dll condivisa (log4.net) – NoviceAndNovice