Сегодня у меня снова возникла та же проблема.
Прежде всего, благодаря Джону Кейджу и связанной статье в его сообщении в этой теме, см. Выше (или ниже) .+1 !!!Это решило мою проблему.
Но поскольку я ненавижу такие вещи, как toggle them as appropriate for your case
, что означает ничего, кроме trial and error
, я провел несколько тестов, так как у меня есть 2 решения с большим количеством проектов C ++ / CLI в каждом.
Вот мой совет и объяснение этого:
Для всех «самостоятельно созданных» сборок (для которых «copy local» установлено в true):
«Общие свойства» -> «Каркас и ссылки» -> «Ссылки» -> Выберите ссылку.
На странице свойств справа -> «Свойства сборки» -> «Использовать зависимости в сборке»
- (скопировано из связанной статьи форума msdn из сообщения Джона Кейджа)
Установите для этого параметра Use Dependencies In Build
значение "false", сняв отметку.
Он работает как "пересылка ссылок", см. примерниже.
ТЕХНИЧЕСКИЙ ФОН:
-> означает «ссылки»
метод 1:
в моем решении SwCore:
A.1.1 network->tools
,А.1.2 network->basics
.
А.2.1 tools->basics
.
А.3.1 drives->basics
, А.3.2 drives->tools
, А.3.3 drives->network
А.4.1 ...
с параметром "Использовать зависимости в сборке", установленным в true, ссылка A.1.2 может быть опущена, так как она включена в A.2.1.
все файлы создаются в swcore \ release \
== problem:
в растворе 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
создается в DDI \ Release \ и с помощью "UDInBuild"Значение true, оно включает в себя basics
.
DDI_hardware
, созданное ... и если для UDInBuild установлено значение true, оно включает DDI_job->basics
.
DDI_hardware также ссылается на основы из SwCore \ Release \
== >> двойная ссылка на основы и другие.VS видит 2 файла и не может понять, что это одно и то же содержимое.
метод 2:
A.1.1 network->tools
, A.1.2 network->basics
.
A.2.1 tools->basics
.
с "UDInBuild", установленным в FALSE, ссылка A.1.2 НЕ МОЖЕТ быть пропущена, поскольку она не пересылается из A.2.1.
== работаетпотому что ни одна сборка не будет содержать других более глубоких зависимостей, поэтому не будет конфликтов.
Кстати: это заставляет вас указывать все необходимые ссылки для каждого проекта, поэтому у вас также есть общее представление о том, кто вы есть.используя в вашем проекте.
Последняя информация: Я не могу точно сказать, верно ли мое объяснение.Может быть, так еще можно подтвердить.