Полное руководство по языку программирования С# 14 и платформе .NET 10 / Процессы и домены приложения

Домены приложений

Начальный ⏱ 1 мин чтения 👁 2 🕓 обновлено 11.08.2026

При запуске приложения, написанного на C#, операционная система создает процесс, а среда CLR создает внутри этого процесса логический контейнер, который называется доменом приложения и внутри которого работает запущенное приложение.

Для управления домена платформа .NET предоставляет класс AppDomain. Рассмотрим некоторые основные методы и свойства данного класса:

  • Свойство BaseDirectory: базовый каталог, который используется для получения сборок (как правило, каталог самого приложения)

  • Свойство CurrentDomain: домен текущего приложения

  • Свойство FriendlyName: имя домена приложения

  • Свойство SetupInformation: представляет объект AppDomainSetup и хранит конфигурацию домена приложения

  • Метод ExecuteAssembly(): запускает сборку exe в рамках текущего домена приложения

  • Метод GetAssemblies(): получает набор сборок .NET, загруженных в домен приложения

Получим имя и базовый каталог текущего домена и выведем все загруженные в домен сборки:


using System.Reflection;

AppDomain domain = AppDomain.CurrentDomain;
Console.WriteLine($"Name: {domain.FriendlyName}");
Console.WriteLine($"Base Directory: {domain.BaseDirectory}");
Console.WriteLine();

Assembly[] assemblies = domain.GetAssemblies();
foreach (Assembly asm in assemblies)
    Console.WriteLine(asm.GetName().Name);

Консольный вывод:

Name: HelloApp
Base Directory: /Users/eugene/Projects/HelloApp/HelloApp/bin/Debug/net6.0/

System.Private.CoreLib
HelloApp
System.Runtime
System.Console
System.Threading
Microsoft.Win32.Primitives
System.Collections
System.Memory

Проверь себя

📋 Тест по теме «Домены приложений» Тест по теме

Практические задания

Лёгкое Ручная проверка Заполните пропуск в коде (1)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

using _____.Reflection;

AppDomain domain = AppDomain.CurrentDomain;
Console.WriteLine($"Name: {domain.FriendlyName}");
Console.WriteLine($"Base Directory: {domain.BaseDirectory}");
Console.WriteLine();

Assembly[] assemblies = domain.GetAssemblies();
foreach (Assembly asm in assemblies)
    Console.WriteLine(asm.GetName().Name);
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (2)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

using System.Reflection;

_____ domain = AppDomain.CurrentDomain;
Console.WriteLine($"Name: {domain.FriendlyName}");
Console.WriteLine($"Base Directory: {domain.BaseDirectory}");
Console.WriteLine();

Assembly[] assemblies = domain.GetAssemblies();
foreach (Assembly asm in assemblies)
    Console.WriteLine(asm.GetName().Name);
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (3)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

using System.Reflection;

AppDomain domain = AppDomain.CurrentDomain;
Console.WriteLine($"_____: {domain.FriendlyName}");
Console.WriteLine($"Base Directory: {domain.BaseDirectory}");
Console.WriteLine();

Assembly[] assemblies = domain.GetAssemblies();
foreach (Assembly asm in assemblies)
    Console.WriteLine(asm.GetName().Name);
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (4)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

using System.Reflection;

AppDomain domain = AppDomain.CurrentDomain;
Console._____($"Name: {domain.FriendlyName}");
Console.WriteLine($"Base Directory: {domain.BaseDirectory}");
Console.WriteLine();

Assembly[] assemblies = domain.GetAssemblies();
foreach (Assembly asm in assemblies)
    Console.WriteLine(asm.GetName().Name);
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (5)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

using System.Reflection;

AppDomain domain = AppDomain.CurrentDomain;
Console.WriteLine($"Name: {domain.FriendlyName}");
Console.WriteLine($"Base Directory: {domain._____}");
Console.WriteLine();

Assembly[] assemblies = domain.GetAssemblies();
foreach (Assembly asm in assemblies)
    Console.WriteLine(asm.GetName().Name);
Войдите, чтобы отправить решение
Среднее Ручная проверка Восстановите код по памяти (1)
+20 XP

В этом фрагменте кода урока пропущены два ключевых элемента. Впишите оба пропущенных значения через запятую в порядке появления (например: x, 5).

using System.Reflection;

AppDomain domain = AppDomain.CurrentDomain;
_____.WriteLine($"Name: {domain._____}");
Console.WriteLine($"Base Directory: {domain.BaseDirectory}");
Console.WriteLine();

Assembly[] assemblies = domain.GetAssemblies();
foreach (Assembly asm in assemblies)
    Console.WriteLine(asm.GetName().Name);
Войдите, чтобы отправить решение
Среднее Ручная проверка Восстановите код по памяти (2)
+20 XP

В этом фрагменте кода урока пропущены два ключевых элемента. Впишите оба пропущенных значения через запятую в порядке появления (например: x, 5).

using System.Reflection;

AppDomain _____ = AppDomain.CurrentDomain;
Console.WriteLine($"Name: {domain.FriendlyName}");
Console.WriteLine($"Base Directory: {domain.BaseDirectory}");
Console.WriteLine();

Assembly[] assemblies = domain._____();
foreach (Assembly asm in assemblies)
    Console.WriteLine(asm.GetName().Name);
Войдите, чтобы отправить решение
Среднее Ручная проверка Расставьте строки кода в правильном порядке
+20 XP

Строки кода из примера этого урока перемешаны. Впишите их в правильном порядке, каждую строку — с новой строки.

using System.Reflection;
Console.WriteLine();
Console.WriteLine($"Name: {domain.FriendlyName}");
Assembly[] assemblies = domain.GetAssemblies();
foreach (Assembly asm in assemblies)
    Console.WriteLine(asm.GetName().Name);
AppDomain domain = AppDomain.CurrentDomain;
Console.WriteLine($"Base Directory: {domain.BaseDirectory}");
Войдите, чтобы отправить решение
Сложное Ручная проверка Объясните и модифицируйте пример из урока «Домены приложений»
+30 XP

Опишите своими словами, что делает приведённый пример кода из урока «Домены приложений», и предложите одно осмысленное изменение (например, другое входное значение или дополнительное условие). Приведите итоговый код.

using System.Reflection;

AppDomain domain = AppDomain.CurrentDomain;
Console.WriteLine($"Name: {domain.FriendlyName}");
Console.WriteLine($"Base Directory: {domain.BaseDirectory}");
Console.WriteLine();

Assembly[] assemblies = domain.GetAssemblies();
foreach (Assembly asm in assemblies)
    Console.WriteLine(asm.GetName().Name);
Войдите, чтобы отправить решение
Сложное Ручная проверка Найдите потенциальную проблему в коде урока «Домены приложений»
+30 XP

Изучите приведённый фрагмент кода и опишите, при каких входных данных или условиях он может сработать не так, как ожидается (граничный случай, отсутствие проверки и т.п.). Предложите исправленный вариант.

using System.Reflection;

AppDomain domain = AppDomain.CurrentDomain;
Console.WriteLine($"Name: {domain.FriendlyName}");
Console.WriteLine($"Base Directory: {domain.BaseDirectory}");
Console.WriteLine();

Assembly[] assemblies = domain.GetAssemblies();
foreach (Assembly asm in assemblies)
    Console.WriteLine(asm.GetName().Name);
Войдите, чтобы отправить решение
Мини-проект Ручная проверка Мини-проект по теме «Домены приложений»
+50 XP

Соберите небольшую программу, которая последовательно демонстрирует ключевые идеи урока. Программа должна быть рабочей и содержать минимум два самостоятельно написанных фрагмента, а не просто копию примера из урока.

Войдите, чтобы отправить решение
Домашнее задание Ручная проверка Домашнее задание по теме «Домены приложений»
+25 XP

Напишите собственную небольшую программу, применяющую материал темы «Домены приложений». Используйте не менее одной конструкции, показанной в примерах урока. Прикрепите код решения и краткое описание того, что он делает.

Войдите, чтобы отправить решение

Обсуждение (0)

Войдите, чтобы оставить комментарий.