AspNetCore.Docs/aspnetcore/hosting/directory-structure.md

39 lines
3.3 KiB
Markdown
Raw Normal View History

2016-10-29 01:35:15 +08:00
---
2017-04-08 04:11:19 +08:00
title: ASP.NET Core directory structure | Microsoft Docs
author: guardrex
description: The directory structure of published ASP.NET Core applications.
keywords: ASP.NET Core, directory structure
2016-10-29 01:35:15 +08:00
ms.author: riande
manager: wpickett
2017-03-17 08:43:46 +08:00
ms.date: 03/15/2017
2016-10-29 01:35:15 +08:00
ms.topic: article
ms.assetid: e55eb131-d42e-4bf6-b130-fd626082243c
2016-11-17 08:24:57 +08:00
ms.technology: aspnet
ms.prod: asp.net-core
2016-10-29 01:35:15 +08:00
uid: hosting/directory-structure
---
2017-04-08 04:11:19 +08:00
# Directory structure of published ASP.NET Core apps
2016-10-29 01:35:15 +08:00
By [Luke Latham](https://github.com/GuardRex)
In ASP.NET Core, the application directory, *publish*, is comprised of application files, config files, static assets, packages, and the runtime (for self-contained apps). This is the same directory structure as previous versions of ASP.NET, where the entire application lives inside the web root directory.
| App Type | Directory Structure |
| --- | --- |
| Framework-dependent Deployment | <ul><li>publish\*<ul><li>logs\* (if included in publishOptions)</li><li>refs\*</li><li>runtimes\*</li><li>Views\* (if included in publishOptions)</li><li>wwwroot\* (if included in publishOptions)</li><li>.dll files</li><li>myapp.deps.json</li><li>myapp.dll</li><li>myapp.pdb</li><li>myapp.PrecompiledViews.dll (if precompiling Razor Views)</li><li>myapp.PrecompiledViews.pdb (if precompiling Razor Views)</li><li>myapp.runtimeconfig.json</li><li>web.config (if included in publishOptions)</li></ul></li></ul> |
| Self-contained Deployment | <ul><li>publish\*<ul><li>logs\* (if included in publishOptions)</li><li>refs\*</li><li>Views\* (if included in publishOptions)</li><li>wwwroot\* (if included in publishOptions)</li><li>.dll files</li><li>myapp.deps.json</li><li>myapp.exe</li><li>myapp.pdb</li><li>myapp.PrecompiledViews.dll (if precompiling Razor Views)</li><li>myapp.PrecompiledViews.pdb (if precompiling Razor Views)</li><li>myapp.runtimeconfig.json</li><li>web.config (if included in publishOptions)</li></ul></li></ul> |
2016-10-29 01:35:15 +08:00
\* Indicates a directory
The contents of 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 in the deployment, its location serves as the server's physical path to the hosted application. The *wwwroot* directory, if present, only contains static assets. The *logs* directory may be included in the deployment by creating it in the project and adding the `<Target>` element shown below to your *.csproj* file or by physically creating the directory on the server.
```xml
2017-03-17 08:43:46 +08:00
<Target Name="CreateLogsFolder" AfterTargets="AfterPublish">
<MakeDir Directories="$(PublishDir)logs" Condition="!Exists('$(PublishDir)logs')" />
<MakeDir Directories="$(PublishUrl)Logs" Condition="!Exists('$(PublishUrl)Logs')" />
</Target>
```
2016-10-29 01:35:15 +08:00
2017-04-08 04:11:19 +08:00
The first `<MakeDir>` element, which uses the `PublishDir` property, is used by the .NET Core CLI to determine the target location for the publish operation. The second `<MakeDir>` element, which uses the `PublishUrl` property, is used by Visual Studio to determine the target location. Visual Studio uses the `PublishUrl` property for compatibility with non-.NET Core projects.
2017-03-17 08:43:46 +08:00
2016-10-29 01:35:15 +08:00
The deployment directory requires Read/Execute permissions, while the *logs* directory requires Read/Write permissions. Additional directories where assets will be written require Read/Write permissions.