You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非SDK风格项目如何为NuGet包添加TargetFramework信息?

问题背景

这是另一问题的后续。我有一个迁移后的.NET Framework项目,尝试使用msbuild -t:pack及对应的NuGet.Build.Tasks.Pack进行打包。我已在*.csproj文件中添加了所有NuGet信息,如下所示:

<TargetFramework>net48</TargetFramework> <!-- 报错! -->
<PackageId>Testcenter.RobotFramework</PackageId>
<Version>1.0.0</Version>
<Authors>Testcenter Team, Some person</Authors>
<Company>Some company</Company>
<PackageOutputPath>$(ProjectDir)</PackageOutputPath>
<Description>A class library to implement a remote library interface conforming to RobotFramework.</Description>
<Title>RobotFramework Remote-Library-Interface for C#</Title>
<Copyright>Copyright (c) Some company 2022</Copyright>
<RepositoryUrl>https://redacted-url.com/repos/testcenter.robotframework/browse</RepositoryUrl>
<Product>Testcenter.RobotFramework</Product>
<AssemblyVersion>1.0.0</AssemblyVersion>
<FileVersion>1.0.0</FileVersion>

由于报错,我无法使用SDK风格项目中常用的TargetFramework属性。我该添加什么属性或配置,才能让NuGet识别我以net48为目标框架,并在打包后的项目中显示该信息? 我在目标框架文档中未找到相关信息,因为该文档仅针对SDK风格项目,且显然我无法在当前项目中使用其属性。同时,我也未找到针对非SDK项目的类似文档。


解决方案

对于这类无法使用SDK风格TargetFramework属性的.NET Framework项目,可通过以下两种方式配置,让NuGet正确识别net48目标框架:

1. 替换为旧项目格式的目标框架属性

删掉报错的<TargetFramework>net48</TargetFramework>,改用旧项目的原生目标框架配置:

<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>

NuGet.Build.Tasks.Pack会自动读取该属性,打包后包的目标框架会被识别为net48。

2. 手动指定NuGet包的目标框架

如果第一种方式不生效,可直接添加PackageTargetFramework属性明确指定:

<PackageTargetFramework>net48</PackageTargetFramework>

该属性会直接告知NuGet打包任务当前包的目标框架,确保打包后显示正确的框架信息。

此外,建议保持NuGet.Build.Tasks.Pack为最新版本,避免版本兼容问题。


内容的提问来源于stack exchange,提问作者HackXIt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:30:50