Ответ
Типы из пространства имен System распределены по множеству различных сборок (DLL). Это архитектурное решение, позволяющее подключать только необходимые функциональности и уменьшать размер приложений, особенно в .NET Core и современных версиях .NET.
Ключевые сборки, содержащие типы System:
- System.Private.CoreLib.dll (в .NET Core/.NET 5+): Содержит фундаментальные типы, такие как
System.Object,System.String,System.Int32, базовые интерфейсы и атрибуты. Это "ядро" среды выполнения. - System.Runtime.dll: Содержит многие другие базовые типы и интерфейсы.
- Специализированные сборки: Конкретные функциональные области вынесены в отдельные DLL, которые добавляются как зависимости по мере необходимости.
System.Collections.dll— основные коллекции (List<T>,Dictionary<TKey, TValue>).System.IO.dll— работа с файлами и потоками.System.Threading.Tasks.dll— типы для асинхронного программирования (Task,ValueTask).
Как это выглядит на практике:
В файле проекта .csproj зависимости добавляются автоматически или вручную.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<!-- Явное добавление пакета, если тип из него используется, а ссылки нет -->
<ItemGroup>
<PackageReference Include="System.Text.Json" Version="8.0.0" />
</ItemGroup>
</Project>
Вывод: Пространство имен System — это логическая группировка, а не физическая сборка. Современные приложения .NET ссылаются на десятки сборок, содержащих части этого пространства имен.