【问题标题】:Nuget MsBuild Integration - Snapshot and Release versioningNuget MsBuild 集成 - 快照和发布版本控制
【发布时间】:2017-05-11 15:12:04
【问题描述】:

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

我们熟悉快照和发布等 Maven 概念。我们希望使用 NuGet 工具来实现相同的目的。互联网上的简短搜索表明 Nuget 不支持此功能。对于使用 NuGet 的 dotnet 项目,是否有任何以优雅方式执行此操作的指针?

感谢您在这方面提供任何帮助。谢谢

【问题讨论】:

    标签: c# .net msbuild nuget


    【解决方案1】:

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

    <TargetFramework>net462</TargetFramework>
    

    然后你需要为你的库定义一个版本号。这可以通过设置 Versionproperty OR 来设置 VersionPrefixVersionSuffix 在构建期间组合的属性的组合。对于 CI 场景,您通常只想在 .csproj 文件中的 &lt;PropertyGroup&gt; 元素内设置 VersionPrefix 值:

    <VersionPrefix>1.2.3</VersionPrefix>
    

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

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

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

    dotnet pack -c Release --version-suffix SNAPSHOT
    

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

    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>
    

    【讨论】:

    • 谢谢马丁。由于 nexus repo 问题,我们无法扩展我们的 poc。排序后将尝试此解决方案。
    • 你能添加一个高层次的解释这是什么?听起来不像在 maven 中将包设置为显式快照,而只是编写脚本以自动为您增加版本?那么如何在快照和发布之间切换呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    相关资源
    最近更新 更多