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

NETSDK1152 Multiple output files error for _ViewImports.cshtml files when publishing ASP.NET Core 6

最近我将我的 asp.net 核心 3.1 网络应用程序迁移到 NET6。在迁移之前,我没有这种问题。我的网络应用程序有几个项目 (DLL),其中一些项目根据需要有视图和控制器。我将这些项目标记为 Skd.Razor,如下所示:

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

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <AddRazorSupportForMvc>true</AddRazorSupportForMvc>
  </PropertyGroup>

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

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

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

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

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

谢谢

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

请访问Generate error for duplicate files in publish output获取详细信息。

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

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

<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>

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

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

<Content Remove="file_name"/>
<None Include="file_name">
  <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
  <CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>

参考文献:

  1. NETSDK1152 Error for _ViewImports.cshtml files