Это мой прикладной деплйомент:
c: \ Program Files \ Product \ API.dll (зарегистрирован в Gac)
c: \ Program Files \ Product \ ApiImpl1.dll (не Gac)
c: \ Program Files \ Product \ ApiImpl2.dll (не Gac)
c: \ ConsoleApplication \ TestApi.exe
Api.dll - это Фасад для Приложения, в котором реализовано «c: \ Program Files \ Product \»
Api.Dll зарегистрирован в GAC и имеет сборщик разрешений для библиотек DLL, который находится в "c: \ Program Files \ Product \"
Api.dll ссылается на ApiImpl1.dll и ApiImpl2.dll.
Проблема заключается в том, что в ConsoleApplication я добавляю ссылку на Api.dll Visual Studio копирует рекурсивно ApiImpl1.dll и ApiImpl2.dll в место назначения проекта. (Хотя CopyLocal = False)
Я добавляю ссылку, просматривая "c: \ Program Files \ Product \ API.dll"
Насколько я знаю, у меня есть несколько решений:
1) Зарегистрируйте ApiImpl1.dll и ApiImpl2.dll в GAC (неприемлемо, для этого у меня есть ассемблер сборки)
2) Добавить в «.Net Add Reference» Реестр, «c: \ Program Files \ Product» (не решает проблему)
3) Добавить в реестр .Net Add Reference «Реестр», c: \ windows \ Assembly \ gac_msil \ Api.dll (решить, но это плохое решение)
4) Вручную измените ConsoleApplication.csproj и удалите атрибут HintPath из справочника Api.dll. (Не приемлемо, потому что у меня будет много клиентов, которые будут использовать этот API)