gpt4 book ai didi

nuget - 为多个 .NET Framework 版本创建 NuGet 包

转载 作者:行者123 更新时间:2023-12-05 00:49:35 24 4
gpt4 key购买 nike

我正在开发一个库并希望为 .NET Framework 的多个版本创建 NuGet 包。我没有找到任何包含完整操作列表的文章。

我尝试过的第一个选项是创建一堆配置,如 Release_Net45 等。然后我编辑了 csproj 以更正每个配置的输出目录(lib/net45 等)和目标框架版本。然后我构建了每个配置。在那之后,我运行了 nuget pack 并成功创建了一个包,但有一个警告说没有添加一个 dll,因为它已经在包中......

然后我尝试编辑 csproj 以将 TargetFrameworks 元素和包元数据元素包含到与 Release 配置对应的 PropertyGroup 中。编辑后重新加载项目后,解决方案资源管理器中出现了名为 Dependencies 的新组。我尝试在开发人员命令提示符中使用 msbuild/t:pack/p:Configuration=Release 创建包,但它以没有包目标的错误完成。为了修复它,我添加了 NuGet.Build.Tasks.Pack 包,然后构建了包。但是当我在配置管理器中查看它们时,我的配置突然损坏了。

我没想到为多个目标框架设置包会如此痛苦:( 这样做的正确方法是什么?是否有针对此任务的完整指南?

最佳答案

TargetFramework/TargetFrameworks属性仅在基于 SDK 的项目中受支持。目前,只有 .NET Standard、.NET Core 和 ASP.NET Core 项目的项目模板使用这种基于 SDK 的项目格式。因此,您可以创建一个 .NET Standard 库,然后编辑 csproj(右键单击项目 > 编辑)。

一个最小的例子是:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net45;net461</TargetFrameworks>
</PropertyGroup>
</Project>

注意 Sdk 的存在属性提供了许多默认值和额外的构建逻辑。您不需要在文件夹结构中指定任何 .cs 文件,并且可以使用项目的属性页来设置 NuGet 相关的属性。

在您的案例中显示依赖项节点的原因是因为 VS 2017 为 .NET 项目提供了两个不同的项目系统 - 一个在 VS 中存在很长时间的经典项目系统和一个在新项目系统模型上开发的新项目系统( CPS) 尚不支持经典项目系统的所有功能,但具有附加功能,例如新的依赖项模型、NuGet 的属性页以及在加载项目时支持编辑项目文件。选择加载哪个项目系统是基于 TargetFramework 的存在。或 TargetFrameworks在项目文件中。

关于nuget - 为多个 .NET Framework 版本创建 NuGet 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47479399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com