gpt4 book ai didi

c# - Nuget MsBuild 集成 - 快照和发布版本控制

转载 作者:行者123 更新时间:2023-12-05 04:10:49 25 4
gpt4 key购买 nike

目前,我们正在使用 VS2017 为基于框架 4.6.2 构建的 dot net 项目评估 NuGet 工具。我们的目标是将我们解决方案中的公共(public)库作为引用(如 Maven 依赖项)从内部 nexus 存储库中提取它。

我们熟悉快照和发布等 Maven 概念。我们希望使用 NuGet 工具实现相同的目的。在互联网上的简短搜索表明 Nuget 不支持此功能。对于使用 NuGet 的 dotnet 项目以优雅的方式完成它的任何指示?

在这方面的任何帮助表示赞赏。谢谢

最佳答案

使用基于 SDK 的新项目系统,集成了 NuGet 和 MSBuild。目前在 VS2017 中没有用于此的项目模板,但您可以创建一个 .NET Standard 库并更改 <TargetFramework> .csproj 中的值归档到:

<TargetFramework>net462</TargetFramework>

然后您需要为您的库定义一个版本号。这可以通过设置 Version 来完成。属性 OR 设置 VersionPrefix 的组合和 VersionSuffix在构建期间合并的属性。对于 CI-szenarios,您通常只想设置 VersionPrefix你的值(value).csproj文件,在 <PropertyGroup> 内元素:

<VersionPrefix>1.2.3</VersionPrefix>

这也可以在 Directory.Build.props 中设置解决方案目录中的文件,以便在一个地方为所有项目设置属性:

<Project>
<PropertyGroup>
<VersionPrefix>1.2.3</VersionPrefix>
</PropertyGroup>
</Project>

通过 CI 或本地构建时,您可以设置 VersionSuffix通过命令行属性,dotnet 的打包命令cli 为此提供了一个方便的选项:

dotnet pack -c Release --version-suffix SNAPSHOT

或者,当通过开发人员命令提示符使用 MSBuild 的 VS 版本时,可以实现相同的结果:

msbuild /t:Pack /p:Configuration=Release /p:VersionSuffix=SNAPSHOT

目前(VS 2017 15.2,.NET CLI 1.0.*),当有多个项目相互引用时会出现错误 - 依赖版本不会生成带有指定版本后缀的版本。有一个解决方法:使用相同的属性在打包之前执行额外的恢复:

dotnet msbuild "/t:Pack;Restore" /p:Configuration=Release /p:VersionSuffix=SNAPSHOT

在您的 CI 系统上,您通常会用构建号覆盖后缀以生成类似于 1.2.3-ci-20170102 的版本。或者只生成 SNAPSHOT/PREVIEW等包。

由于 msbuild 允许编写脚本,您还可以扩展 csproj如果满足某些条件,文件会自动设置版本后缀 - 例如始终为调试版本生成后缀,这样您就不会意外发布调试版本。

<VersionSuffix Condition=" '$(Configuration)' != 'Release' ">SNAPSHOT</VersionSuffix>

关于c# - Nuget MsBuild 集成 - 快照和发布版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43919358/

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