NETSDK1152 发布 ASP.NET Core 6 时 _ViewImports.cshtml 文件出现多个输出文件错误

Ald*_*jal 0 c# asp.net-mvc asp.net-core asp.net-core-6.0 .net-6.0

最近我将我的 asp.net core 3.1 Web 应用程序迁移到 NET6。在迁移之前,我没有遇到此类问题。我的网络应用程序有几个项目(DLL),其中一些项目由于要求而具有视图和控制器。我将这些项目标记为 Skd.Razor,如下所示:

<Project Sdk="Microsoft.NET.Sdk.Razor">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <AddRazorSupportForMvc>true</AddRazorSupportForMvc>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

我将 Startup 配置为使用应用程序部件来识别这些控制器和视图:

在此输入图像描述

每个项目都有自己的 _ViewImports.cshtml 包括主项目 SicotX:

在此输入图像描述 在此输入图像描述 在此输入图像描述

当我尝试发布应用程序时出现问题,编译生成以下错误

在此输入图像描述

_ViewImports.cshtml 导致除主 SiotX 项目外的两个项目中的输出路径发生冲突。

我需要在这些项目中使用 _ViewImports,所以我需要您的帮助或指导如何克服这个阻碍我的问题,或者是否可以使用独特的 _ViewImports.cshtml 并与所有项目共享?

谢谢

Dee*_*SFT 5

在 .NET SDK 6.0.100 中,如果来自不同源路径的文件被复制到发布输出中的同一文件路径,.NET SDK 会生成新错误 (NETSDK1152)。当项目及其项目引用包含与发布输出中包含的名称相同的文件时,可能会发生这种情况。

请访问发布输出中的重复文件生成错误以获取详细信息。

我找到了一些可以帮助您解决此问题的建议。

  1. 将 *.csproj 文件中的以下代码添加到您的所有项目中。

<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
Run Code Online (Sandbox Code Playgroud)

  1. 排除有问题的文件复制到输出文件夹。

将以下行添加到common.props(位于解决方案的根目录中):

<Content Remove="file_name"/>
<None Include="file_name">
  <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
  <CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
Run Code Online (Sandbox Code Playgroud)

参考:

  1. 发布错误:发现多个具有相同相对路径的发布输出文件

  2. NETSDK1152 _ViewImports.cshtml 文件错误