📜  已发布的网络核心没有 wwwroot (1)

📅  最后修改于: 2023-12-03 15:09:41.651000             🧑  作者: Mango

已发布的网络核心没有 wwwroot

最近我在开发一个 ASP.NET Core 应用程序时,遇到了一个问题。当我发布应用程序时,我注意到 wwwroot 文件夹没有被复制到发布目录中。这导致我的应用程序在运行时无法找到静态文件(如 JS 和 CSS)。

经过一番研究和测试,我发现这个问题是由于我的项目文件中的一个选项所致。默认情况下,ASP.NET Core 应用程序会在发布时复制 wwwroot 文件夹。但是,如果在项目文件中设置了以下选项:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
  </PropertyGroup>
</Project>

PublishWithAspNetCoreTargetManifest 选项设置为“false”,则会导致 wwwroot 文件夹未被复制。

为了解决这个问题,有两个选项可供选择:

选项一:手动复制 wwwroot 文件夹

在项目文件夹中找到 wwwroot 文件夹,右键单击它并选择“复制”。然后,在发布目录中创建一个新的“wwwroot”文件夹,并将复制的 wwwroot 文件夹粘贴到其中。这可以保证静态文件能够在应用程序运行时找到。

选项二:更改项目文件

将 PublishWithAspNetCoreTargetManifest 设置为“true”,将会恢复 ASP.NET Core 在发布时复制 wwwroot 文件夹的默认行为。

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
    <PublishWithAspNetCoreTargetManifest>true</PublishWithAspNetCoreTargetManifest>
  </PropertyGroup>
</Project>

以上两种方法都可以解决已发布的网络核心没有 wwwroot 的问题。无论你选择哪种方法,都要确保在发布时包含 wwwroot 文件夹,这是确保 ASP.NET Core 应用程序运行正常的重要步骤。

提醒:在做出这些更改之前,最好在本地进行测试以确保应用程序在更改后能够正常运行。