Я прочитал, что удаление неиспользуемых ссылок makes no difference компилятору, поскольку оно игнорирует сборки, на которые не ссылаются сам код.Какова цель «удалить неиспользуемые ссылки»
Но мне трудно поверить, потому что тогда, какова реальная цель Removing unused references? Он не оказывает заметного влияния на размер сгенерированной сборки или иным образом. Или это smart поведение, ограниченное компилятором C# (csc.exe) и не присущим vbc.exe?
Если эта функциональность настолько бесполезна, почему ReSharper предлагает ее как функцию? Почему это предусмотрено в диалоговом окне «Конфигурация проекта Visual Studio»?
Единственное, что я могу придумать, где это было бы полезно, - это во время развертывания. Ссылки (используемые или неиспользуемые) все равно будут скопированы установщиком. Но для сборок, которые находятся в GAC (например, сборки BCL), это тоже не проблема.
Как CLR собирается загрузить модуль во время выполнения, ссылка которого была удалена оптимизацией компилятора? Что мне здесь не хватает? – Dan
@ Dan - Я также не понимаю, почему в этом ответе было так много upvotes, из того, что я читал на других постах, компилятор не будет помещать ссылку на сборку в окончательный вывод, если он не используется. Связанные сборки будут загружаться только JIT при первом вызове метода. Окно загруженных модулей, которое этот ответ дает в качестве доказательства, может отображать все ссылки, поскольку он находится в режиме отладки. – BornToCode
@BornToCode Кроме того, если 'it [is] трудно для CLR определить, действительно ли используется зависимость, то как вообще работает« Удалить неиспользуемые ссылки »? Определение того, используется ли эта ссылка, просто: если ни один код не ссылается ни на что в пространстве имен этой сборки, он не используется. – Dan