Описание тега appdomainsetup

AppDomainSetup предоставляет информацию о конфигурации для нового домена приложения, который представляет собой изолированную среду, в которой сборки Microsoft .NET могут быть изолированы, предоставлены определенные разрешения или PermissionSets и выполнены.

Определение:

AppDomainSetup представляет информацию о конфигурации для нового домена приложения, в котором скомпилированные сборки Microsoft .NET может быть выделены из других сборок. Хотя домены приложений обычно используются для изолирования стороннего или ненадежного кода, их также можно использовать для отделения кода от основного процесса, чтобы предотвратить потенциальную нестабильность в конкретном сегменте приложения.

При создании доменов приложений наиболее важным свойством является ApplicationBase который определяет корневой каталог приложения, а также используется для проверки типов и сборок в каталоге, указанном свойством ApplicationBase.

Использование тегов:

Тег appdomainsetup следует использовать при обращении к проблемам, связанным с System.AppDomainSetup класс в Microsoft .NET или связанные с ним проблемы удаленного взаимодействия или процессов.

Пример (C#):

namespace AppDomainSetupExample
{
    using System;
    using System.IO;
    using System.Reflection;
    using System.Security;
    using System.Security.Permissions;
    using System.Security.Policy;

    class Program
    {
        static void Main(string[] args)
        {
            PermissionSet ps = new PermissionSet(PermissionState.None);
            ps.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
            ps.AddPermission(new FileIOPermission(FileIOPermissionAccess.Write, @"C:\"));

            var assembly = Assembly.GetExecutingAssembly();

            AppDomainSetup ads = new AppDomainSetup();
            ads.ApplicationBase = Path.GetFullPath(assembly.Location);
            StrongName fullTrustAssemblies = assembly.Evidence.GetHostEvidence<StrongName>();

            AppDomain domain = AppDomain.CreateDomain("foo", null, ads, ps, fullTrustAssemblies);

        }
    }
}