Tuve el mismo problema otra vez hoy.
En primer lugar, gracias a Jon Cage y el artículo vinculado en su publicación en este hilo, see above (or below). +1 !!! Solucionó mi problema.
Pero como odio cosas como toggle them as appropriate for your case
, lo que significa nada más que trial and error
, hice algunas pruebas ya que tengo 2 soluciones con un buen número de proyectos C++/CLI en cada una.
Este es mi consejo y explicación para ello:
Para todos 'auto creados' asambleas (que tienen 'copia local' se define como true):
"Propiedades comunes" - Marco>" y Referencias "->" Referencias "-> Seleccione una Referencia.
En la hoja de propiedades a la derecha -> "construcción Propiedades" -> "Use dependencias en construir"
- (copiado del artículo enlazado MSDN foro del puesto de Jon jaula)
Ajuste este parámetro Use Dependencies In Build
a "falso" desmarcando.
Funciona como 'reenvío de referencia', ver ejemplo a continuación.
Antecedentes técnicos:
-> significa 'referencias'
método 1:
en mi solución 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 A.4.1 drives->network
...
con "Use dependencias en construir" establecidas en true, el A.1.2 referencia puede ser omitido, ya que está incluido en A.2.1.
todos los archivos se crean en swcore \ Release \
problema ==:
en solución 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
, B.2.3 DDI_job->job
DDI_job
se crea en DDI \ Release \ y con "U.D.InBuild" establecido en true, incluye basics
.
DDI_hardware
se crea ... y con "U.D.InBuild" establecido en true, incluye DDI_job->basics
.
DDI_hardware también hace referencia a los conceptos básicos de SwCore \ Release \
== >> doble referencia a conceptos básicos y otros. VS ve 2 archivos y no puede darse cuenta de que es el mismo contenido.
método 2:
A.1.1 network->tools
, A.1.2 network->basics
.
A.2.1 tools->basics
.
con "U.D.InBuild" establecido en FALSE, la referencia A.1.2 NO se puede omitir porque no se reenvía desde A.2.1.
== funciona, porque ningún ensamblaje contendrá otras dependencias más profundas, por lo que no habrá conflictos.
BTW: Esto obliga a especificar todas las referencias necesarias para cada proyecto, por lo que también tiene una visión general de lo que está utilizando en su proyecto.
Última información: No puedo asegurarlo, si mi explicación es correcta. Tal vez sea así. otra cosa puede confirmar
Bueno, esto no funciona ... También tiene que hacer que las propiedades "Usar ..." sean falsas para hacer referencia a * .dll ... Pero en esa situación no puede usar ese * .dll ... No es una solución elagant pero lo que encontré es crear un proyecto * .dll vacío agregar referencia a ese * dll (en mi situación agregar log4.net dll a ese proyecto ficticio). Luego, si quería usar ese dll (log4.net) desde otro proyecto agregue ese proyecto ficticio dll en lugar de referencia directa a dll compartido (log4.net) – NoviceAndNovice