Почему мне нужно дважды включать одну и ту же dll в C#? - PullRequest
0 голосов
/ 03 августа 2020

Допустим, у меня есть решение vs, содержащее два проекта: Project 1 - это основная библиотека, используемая в нескольких приложениях, и Project 2 - одно из указанных приложений, ссылающееся на Project 1.

В Project 1 я включаю DLL Microsoft SMO (через пакет NuGet), используемая в классе SQLTool для некоторых настраиваемых SQL серверных операций, которые будут повторно использоваться в наших различных приложениях.

Что меня смущает: когда я вызываю Project1. SQLTool из Project 2 (именно поэтому я в первую очередь ссылаюсь на Project 1), я получаю отсутствующие ссылочные исключения и еще много чего, пока я также не включу Microsoft SMO dll в Project 2. Разве это не избыточно? Разве он не должен быть либо уже включен в качестве «вложенной» ссылки при включении Project 1, либо не нужен вообще, поскольку фактический код из библиотеки DLL SMO используется только в классе SQLTool, который является частью Project 1? Единственный код, который требует SMO в Project 2, - это строка SQLTool.MyMethod(), и она сама использует только часть библиотеки SMO, которая огромна.

...