Скажите, у меня есть четыре проекта:
A
В
С
D
такой, что ссылки A, B, ссылки B, C и ссылки C. D.
В Visual Studio (2017) выясняется, что здание A также запускает сборку в B, C, D, как и ожидалось. Он строит их только один раз. Однако, похоже, что сборка копирует библиотеки DLL в каждый каталог bin проектов, в результате чего структура каталогов (при условии сборки в режиме отладки) выглядит примерно так:
A
->
бункер
-> Отладка
-> A.exe, B.exe, C.exe, D.exe
B
->
бункер
-> Отладка
-> B.exe, C.exe, D.exe
C
->
бункер
-> Отладка
-> C.exe, D.exe
D
->
бункер
-> Отладка
-> D.exe
Кажется, это подразумевает, что существует O (n ^ 2), где n - это количество проектов (и они ссылаются друг на друга, например, так) с точки зрения количества скопированных исполняемых файлов / библиотек . Это приводит к ужасному масштабированию времени сборки в зависимости от количества проектов. Однако наличие большего количества проектов становится очень необходимым для увеличения степени детализации файлов.
В худшем случае для n проектов добавление другого проекта приводит к (n + 1) дополнительным копиям файла с использованием формулы (1 + 2 .. + n) = (n (n + 1)) / 2.
Почему Visual Studio делает это? Почему бы просто не скопировать только в каталог bin А? Единственное преимущество, которое я вижу в текущем подходе, состоит в том, что вы можете запускать DLL / EXE в папках bin B, C и D.