尝试发布经过修剪的 ASP.NET Core MVC 应用程序,涉及缺少类型哈希集的无意义错误

问题描述 投票:0回答:1

我正在尝试发布一个运行时经过修剪的 ASP.NET Core MVC 应用程序。 (由于反射访问模型,应用程序本身无法被修剪;这是典型的 ASP.NET Core MVC;但是我的理解是,这不应该阻止创建修剪后的单个文件可执行文件 - 但我自己的程序集中的所有类型都被考虑已扎根)。

然而,在激活修剪后立即使用

<PublishTrimmed>true</PublishTrimmed>
<IsTrimmable>false</IsTrimmable>

我收到以下难以理解的错误:

obj/Release/net8.0/linux-x64/Microsoft.Extensions.Configuration.Binder.SourceGeneration/Microsoft.Extensions.Configuration.Binder.SourceGeneration.ConfigurationBindingGenerator/BindingExtensions.g.cs(130,70):
错误 CS0246:找不到类型或命名空间名称“HashSet<>”(您是否缺少 using 指令或程序集引用?)

目录树中不存在该文件,因此我无法打开它进行检查。

asp.net-core-mvc .net-8.0
1个回答
0
投票

我始终无法将问题一分为二;但是这个问题可以通过项目文件中的一行来解决。

    <EnableConfigurationBindingGenerator>false</EnableConfigurationBindingGenerator>

我不明白。它试图为看起来足够接近可以进入 IConfiguration 的东西生成一些代码,并且代码生成器正在吐出废话。

但是对于下一个经过的人来说;修剪后的 MVC 二进制文件不起作用。在遇到一个无法克服的问题之前,我取得了一些进步。添加后:

  <ItemGroup>
    <TrimmerRootAssembly Include="Microsoft.AspNetCore.Mvc.Razor" />
    <TrimmerRootAssembly Include="my application assembly" />
  </ItemGroup>

应用程序终止

Unhandled exception. System.TypeLoadException: Could not load type 'Microsoft.AspNetCore.Mvc.ApplicationParts.ConsolidatedAssemblyApplicationPartFactory' from assembly 'Microsoft.AspNetCore.Mvc.Razor, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.

这是不是找不到类型;这是无法加载的。类构造函数抛出异常;由于 .NET 的构建,我们不知道它是什么。进展到此为止。

© www.soinside.com 2019 - 2024. All rights reserved.