Подтвердить что ты не робот

Должен ли я включать все зависимые от System.Collections.Immutable?

Я только что переключился с (более старого) пакета Microsoft.Bcl.Immutable NuGet на System.Collections.Immutable и с удивлением обнаружил все эти новые зависимости пакета в моем проекте:

System.Collections
System.Diagnostics.Debug
System.Globalization
System.Linq
System.Resources.ResourceManager
System.Runtime
System.Runtime.Extensions
System.Threading

Они перечислены как зависимости пакета NuGet, поэтому они имеют право быть там, но они, очевидно, также уже установлены на моем ПК и моей целевой среде (Azure btw), поскольку они поставляются с каркасом.

У меня уже есть большое количество пакетов в моем проекте и хотелось бы избежать дополнительных накладных расходов, вызванных этими 8 пакетами, если это возможно (и без стрельбы в ногу).

Безопасно ли удалять эти зависимости?
Должен ли я теперь использовать эти пакеты во всем моем проекте, потому что они могут отличаться от их установленных версий, и некоторая часть моего проекта теперь может использовать неправильные? (из-за некоторой DLL-связи безумия?)

Изменить: Только для полноты, поскольку раньше был комментарий: зависимости - это фактические пакеты (а не пространства имен) и должны быть загружены, я планирую и компилирую с .NET 4.6, работая в VS2015. Это вполне возможно, хотя что-то устарело и пакеты не нужно загружать нормально?

4b9b3361

Ответ 1

Вы просто видите побочный эффект пакета Nuget, который должен держать много людей счастливыми. Пакет поддерживает огромное количество целевых объектов, он быстро растет с самого начала. Я вижу поддержку Xamarin для OSX и iOS, Windows Phone 8.0 и 8.1, Windows Store, CoreCLR (проект с открытым исходным кодом),.NET 4.5, MonoTouch для iOS и Android и .NETCore(Silverlight).

Эти зависимые пакеты просто содержат ссылочные сборки, которые обычно устанавливаются в каталоге c:\program files x86\reference assemblysies. Пакет Nuget не исключает, что такая ссылочная сборка может отсутствовать и включает в себя весь комплект и kaboodle.

После того, как он будет загружен, программа установки пакета запускает и добавляет ссылки, которые вам действительно нужны в вашем проекте. Легко увидеть, что произошло, просто откройте ссылку node вашего проекта. Если ваша целевая настольная версия .NET 4.5 и выше, общее количество добавленных ссылок - одно, просто System.Collections.Immutable. Да, вы можете удалить их.