Структура каталогов ASP.NET CoreASP.NET Core directory structure

Автор Люк Латэм (Luke Latham)By Luke Latham

Каталог публикации содержит развертываемые ресурсы приложения, созданные командной dotnet publish.The publish directory contains the app's deployable assets produced by the dotnet publish command. Каталог содержит следующее.The directory contains:

Тип приложенияApp Type Структура каталоговDirectory Structure
Развертывание, зависящее от платформыFramework-dependent Deployment
  • publish†publish†
    • Views† (в приложениях MVC, если представления не компилируются заранее)Views† (MVC apps; if views aren't precompiled)
    • Pages† (в приложениях MVC или Razor Pages, если страницы не компилируются заранее)Pages† (MVC or Razor Pages apps; if pages aren't precompiled)
    • wwwroot†wwwroot†
    • *.DLL-файлы*.dll files
    • {имя_сборки}.deps.json{ASSEMBLY NAME}.deps.json
    • {имя_сборки}.dll{ASSEMBLY NAME}.dll
    • {имя_сборки}.pdb{ASSEMBLY NAME}.pdb
    • {имя_сборки}.Views.dll{ASSEMBLY NAME}.Views.dll
    • {имя_сборки}.Views.pdb{ASSEMBLY NAME}.Views.pdb
    • {имя_сборки}.runtimeconfig.json{ASSEMBLY NAME}.runtimeconfig.json
    • web.config (в развертываниях IIS)web.config (IIS deployments)
Автономное развертываниеSelf-contained Deployment
  • publish†publish†
    • Views† (в приложениях MVC, если представления не компилируются заранее)Views† (MVC apps; if views aren't precompiled)
    • Pages† (в приложениях MVC или Razor Pages, если страницы не компилируются заранее)Pages† (MVC or Razor Pages apps; if pages aren't precompiled)
    • wwwroot†wwwroot†
    • *DLL-файлы*.dll files
    • {имя_сборки}.deps.json{ASSEMBLY NAME}.deps.json
    • {имя_сборки}.dll{ASSEMBLY NAME}.dll
    • {имя_сборки}.exe{ASSEMBLY NAME}.exe
    • {имя_сборки}.pdb{ASSEMBLY NAME}.pdb
    • {имя_сборки}.Views.dll{ASSEMBLY NAME}.Views.dll
    • {имя_сборки}.Views.pdb{ASSEMBLY NAME}.Views.pdb
    • {имя_сборки}.runtimeconfig.json{ASSEMBLY NAME}.runtimeconfig.json
    • web.config (в развертываниях IIS)web.config (IIS deployments)

†Обозначает каталог†Indicates a directory

Каталог публикации представляет корневой путь содержимого для развертывания, который также называется путь к базовой папке приложения.The publish directory represents the content root path, also called the application base path, of the deployment. Независимо от того, какое имя присвоено каталогу публикации, развернутого на сервере приложения, именно это расположение обозначает физический путь к размещенному приложению на этом сервере.Whatever name is given to the publish directory of the deployed app on the server, its location serves as the server's physical path to the hosted app.

Каталог wwwroot, если таковой имеется, содержит только статические активы.The wwwroot directory, if present, only contains static assets.

Создание папки Logs полезно для ведения расширенного журнала отладки модуля ASP.NET Core.Creating a Logs folder is useful for ASP.NET Core Module enhanced debug logging. Папки, указанные в пути к значению <handlerSetting>, не создаются автоматически и должны заранее существовать в развертывании, чтобы модуль мог осуществлять запись в журнал отладки.Folders in the path provided to the <handlerSetting> value aren't created by the module automatically and should pre-exist in the deployment to allow the module to write the debug log.

Каталог Logs для развертывания можно создать одним из двух указанных далее методов.A Logs directory can be created for the deployment using one of the following two approaches:

  • Добавьте в файл проекта элемент <Target> следующего содержания:Add the following <Target> element to the project file:

    <Target Name="CreateLogsFolder" AfterTargets="Publish">
       <MakeDir Directories="$(PublishDir)Logs" 
                Condition="!Exists('$(PublishDir)Logs')" />
       <WriteLinesToFile File="$(PublishDir)Logs\.log" 
                         Lines="Generated file" 
                         Overwrite="True" 
                         Condition="!Exists('$(PublishDir)Logs\.log')" />
    </Target>
    

    Элемент <MakeDir> создает пустую папку Logs в публикуемых выходных данных.The <MakeDir> element creates an empty Logs folder in the published output. Этот элемент использует свойство PublishDir, чтобы определить целевое расположение для создания папки.The element uses the PublishDir property to determine the target location for creating the folder. Несколько методов развертывания, например веб-развертывание, пропускают пустые папки во время развертывания.Several deployment methods, such as Web Deploy, skip empty folders during deployment. Элемент <WriteLinesToFile> создает файл в папке Logs, чтобы гарантировать ее развертывание на целевом сервере.The <WriteLinesToFile> element generates a file in the Logs folder, which guarantees deployment of the folder to the server. Создание папки с помощью этого подхода завершается ошибкой, если рабочий процесс не имеет прав на запись в целевую папку.Folder creation using this approach fails if the worker process doesn't have write access to the target folder.

  • Самостоятельно создайте физическую папку Logs на сервере в каталоге развертывания.Physically create the Logs directory on the server in the deployment.

Для каталога развертывания нужны права на чтение и выполнение.The deployment directory requires Read/Execute permissions. Для каталога Logs нужны права на чтение и запись.The Logs directory requires Read/Write permissions. Для дополнительных каталогов, в которые записываются файлы, нужны права на чтение и запись.Additional directories where files are written require Read/Write permissions.

Дополнительные ресурсыAdditional resources