c# - 有条件地指定 nuget 包版本

标签 c# nuget

假设我正在开发一个已关闭的功能(C# 项目),即尚未准备好发布。

我的项目通过 nuget 依赖于一个组件,这也是我维护的。

我的功能需要更改组件以及我的消费项目。

我需要发布中间版本,我不喜欢分支。

在我的项目中,我可以关闭功能并发布。问题是:我如何在功能切换项目中使用 nuget,这样如果功能关闭,我使用组件的 X 版本,当功能打开时使用 X+1 版本。

  • 我找不到向 packages.config 添加条件的方法

我唯一能想到的是,为非发布环境使用不同的提要,但这可能会导致其他后勤问题。

编辑:

我的构建运行在 CI 服务器上,所以我需要能够以某种方式编写脚本。

最佳答案

如果您控制了 NuGet 源,那么您可以使用 Pre-Release functionality .

本质上,您通过为 Nuget 包添加 -alpha 后缀来对其进行版本控制。或 -beta然后在 Visual Studio 中勾选 NuGet 包提要中的“包含预发布版”复选框。

要在构建服务器上使用开关,我建议您查看使用 MSBuild/MSBuild Community Tasks/MSBuild Extension pack。

您可以使用 MSBuild 运行构建步骤,它可以检查配置文件并修改 .nuspec 文件。我没有像前一段时间那样手头的源代码,但是可以使用 xml/msbuild 来解析 xml 文件并对其应用更改。 IIRC 的一个大“陷阱”是您需要指定 .nusepc命名空间

<package xmlns="http://schemas.microsoft.com/packaging/2016/06/nuspec.xsd">

当您解析 nuspec 文件时,应该可以将 <dependencies> 作为目标元素并使用预发布标签为所有依赖项添加后缀。

关于c# - 有条件地指定 nuget 包版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40867530/

相关文章:

项目属性中缺少包选项卡

visual-studio - 错误MSB4062 : The "Xamarin.Forms.Build.Tasks.GetTasksAbi" task could not be loaded from the assembly

c# - 将 nuget 包转移到新的解决方案

c# - 将单元测试写入程序集或单独的程序集中?

javascript - 如何使用我的数据库条目创建下拉列表?

.net - nuget没有添加引用

MSBuild UsingTask 和解析引用

c# - 为什么原生Win32难拆,.NET app拆容易?

c# - CurrentDomain.AssemblyResolve 无法解析 'some' 程序集

c# - 调用存储在字典中的方法