ASP.NET Core 目录结构

作者:Luke Latham

发布目录包含应用的可部署资产,由 dotnet publish 命令生成 。 该目录包含:

  • 应用程序文件
  • 配置文件
  • 静态资产
  • package
  • 运行时(仅限独立部署
应用类型 目录结构
依赖于框架的可执行文件 (FDE)
  • publish†
    • Views† MVC 应用(如果未预编译视图)
    • Pages† MVC 或 Razor Pages应用(如果未预编译页)
    • wwwroot†
    • .dll 文件
    • {ASSEMBLY NAME}.deps.json
    • {ASSEMBLY NAME}.dll
    • {ASSEMBLY NAME}{.EXTENSION} 在 Windows 上,扩展名为 .exe,在 macOS 或 Linux 上,无扩展名
    • {ASSEMBLY NAME}.pdb
    • {ASSEMBLY NAME}.Views.dll
    • {ASSEMBLY NAME}.Views.pdb
    • {ASSEMBLY NAME}.runtimeconfig.json
    • web.config(IIS 部署)
    • createdump (Linux createdump 实用程序)
    • .so(Linux 共享对象库)
    • {ASSEMBLY NAME}.deps.json
    • {ASSEMBLY NAME}.dll
    • {ASSEMBLY NAME}{.EXTENSION} .exe extension on Windows, no extension on macOS or Linux
    • {ASSEMBLY NAME}.pdb
    • {ASSEMBLY NAME}.Views.dll
    • {ASSEMBLY NAME}.Views.pdb
    • {ASSEMBLY NAME}.runtimeconfig.json
    • web.config (IIS deployments)
    • createdump (Linux createdump utility)
    • .so (Linux shared object library)
    • .a(macOS 存档)
    • .dylib(macOS 动态库)
    • .dylib (macOS dynamic library)
独立部署 (SCD)
  • publish†
    • Views† MVC 应用(如果未预编译视图)
    • Pages† MVC 或 Razor Pages应用(如果未预编译页)
    • wwwroot†
    • *.dll 文件
    • {ASSEMBLY NAME}.deps.json
    • {ASSEMBLY NAME}.dll
    • {ASSEMBLY NAME}.exe
    • {ASSEMBLY NAME}.pdb
    • {ASSEMBLY NAME}.Views.dll
    • {ASSEMBLY NAME}.Views.pdb
    • {ASSEMBLY NAME}.runtimeconfig.json
    • web.config(IIS 部署)

†指示目录

publish 目录代表部署的内容根路径 ,也称为应用程序基路径 。 无论对服务器上已部署应用的 publish 目录如何命名,其位置都可作为托管应用的服务器物理路径。

wwwroot 目录(如果存在)仅包含静态资产。

其他资源

发布目录包含应用的可部署资产,由 dotnet publish 命令生成 。 该目录包含:

  • 应用程序文件
  • 配置文件
  • 静态资产
  • package
  • 运行时(仅限独立部署
应用类型 目录结构
依赖于框架的可执行文件 (FDE)
  • publish†
    • Views† MVC 应用(如果未预编译视图)
    • Pages† MVC 或 Razor Pages应用(如果未预编译页)
    • wwwroot†
    • .dll 文件
    • {ASSEMBLY NAME}.deps.json
    • {ASSEMBLY NAME}.dll
    • {ASSEMBLY NAME}{.EXTENSION} 在 Windows 上,扩展名为 .exe,在 macOS 或 Linux 上,无扩展名
    • {ASSEMBLY NAME}.pdb
    • {ASSEMBLY NAME}.Views.dll
    • {ASSEMBLY NAME}.Views.pdb
    • {ASSEMBLY NAME}.runtimeconfig.json
    • web.config(IIS 部署)
    • createdump (Linux createdump 实用程序)
    • .so(Linux 共享对象库)
    • {ASSEMBLY NAME}.deps.json
    • {ASSEMBLY NAME}.dll
    • {ASSEMBLY NAME}{.EXTENSION} .exe extension on Windows, no extension on macOS or Linux
    • {ASSEMBLY NAME}.pdb
    • {ASSEMBLY NAME}.Views.dll
    • {ASSEMBLY NAME}.Views.pdb
    • {ASSEMBLY NAME}.runtimeconfig.json
    • web.config (IIS deployments)
    • createdump (Linux createdump utility)
    • .so (Linux shared object library)
    • .a(macOS 存档)
    • .dylib(macOS 动态库)
    • .dylib (macOS dynamic library)
独立部署 (SCD)
  • publish†
    • Views† MVC 应用(如果未预编译视图)
    • Pages† MVC 或 Razor Pages应用(如果未预编译页)
    • wwwroot†
    • *.dll 文件
    • {ASSEMBLY NAME}.deps.json
    • {ASSEMBLY NAME}.dll
    • {ASSEMBLY NAME}.exe
    • {ASSEMBLY NAME}.pdb
    • {ASSEMBLY NAME}.Views.dll
    • {ASSEMBLY NAME}.Views.pdb
    • {ASSEMBLY NAME}.runtimeconfig.json
    • web.config(IIS 部署)

†指示目录

publish 目录代表部署的内容根路径 ,也称为应用程序基路径 。 无论对服务器上已部署应用的 publish 目录如何命名,其位置都可作为托管应用的服务器物理路径。

wwwroot 目录(如果存在)仅包含静态资产。

创建 Logs 文件夹对于 ASP.NET 核心模块增强的调试日志记录来说非常有用 。 提供给 <handlerSetting> 值的路径中的文件夹不是由模块自动创建的,并且应该预先存在于部署中以允许模块编写调试日志。

可以使用以下两种方法之一为部署创建 Logs 目录 :

  • 向项目添加以下 <Target> 元素:

    <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 文件夹。 该元素使用 PublishDir 属性来确定创建文件夹的目标位置。 几种部署方法(如 Web 部署)均在部署期间跳过空文件夹。 <WriteLinesToFile> 元素在 Logs 文件夹中生成一个文件,该文件可确保将文件夹部署到服务器。 如果工作进程不具有对目标文件夹的写入权限,则使用此方法的文件夹创建操作将失败。

  • 在部署中的服务器上物理创建 Logs 目录。

部署目录需要读取/执行权限。 Logs 目录需要读/写权限。 将文件写入其他目录需要读/写权限。

其他资源

上一篇:使用 Visual Studio for Mac 发布到文件夹

下一篇:ASP.NET Core 中的运行状况检查

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程