修整程序集需要 .NET Core 3.0 或更高版本。

最近编译WinSW,提示:修整程序集需要 .NET Core 3.0 或更高版本。

百思不得解,最后原来我不知道“修整程序”,在csproj文件中这么一段

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFrameworks>net461;net6.0-windows</TargetFrameworks>
    <LangVersion>latest</LangVersion>
    <Nullable>enable</Nullable>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>    
    <PublishTrimmed>true</PublishTrimmed>

最后一行,就是“修整”。而net461是不支持的。所以在编译到461就提示有问题了。问AI,回复如下:

 

复制代码
在你的 .csproj 文件中,使用 <TargetFrameworks> 指定了多个目标框架,包括 net461 和 net6.0-windows。你启用了 <PublishTrimmed>true</PublishTrimmed>,这意味着你希望在发布时对程序集进行修整(trimming)。
然而,修整功能只适用于 .NET Core 3.0 及更高版本,而 net461 是 .NET Framework 的一个版本,因此它不支持修整。 为了解决这个问题,你有以下几种选择: 1。移除不支持修整的框架: 如果你不需要支持 net461,可以将其移除,只保留支持修整的框架。例如:
<TargetFrameworks>net6.0-windows</TargetFrameworks> <PublishTrimmed>true</PublishTrimmed> 2。使用条件编译: 如果你需要同时支持 .NET Framework 和 .NET Core/.NET 5+,你可以为不同的目标框架使用条件编译来启用或禁用修整。例如: <PropertyGroup> <PublishTrimmed Condition="'$(TargetFramework)' == 'net6.0-windows'">true</PublishTrimmed> <PublishTrimmed Condition="'$(TargetFramework)' == 'net461'">false</PublishTrimmed> </PropertyGroup> 3/将项目迁移到 .NET 5 或 .NET 6: 考虑将整个项目迁移到仅使用 .NET 5 或 .NET 6,这样你就可以利用最新的功能,包括修整。
复制代码

我选择2,最后的csproj修改为类似以下

复制代码
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFrameworks>net461;net6.0-windows</TargetFrameworks>
    <LangVersion>latest</LangVersion>
    <Nullable>enable</Nullable>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>    
    <PublishTrimmed>true</PublishTrimmed>
    <AssemblyTitle>Windows Service Wrapper</AssemblyTitle>
  </PropertyGroup>
  <PropertyGroup>
    <PublishTrimmed Condition="'$(TargetFramework)' == 'net6.0-windows'">true</PublishTrimmed>
    <PublishTrimmed Condition="'$(TargetFramework)' == 'net461'">false</PublishTrimmed>
  </PropertyGroup>
复制代码

 

posted @   生命体验之kevin-Y  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示