有条件地指定nuget包版本

时间:2016-11-29 13:48:11

标签: c# nuget

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

我的项目取决于通过nuget的组件,这也是我维护的。

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

我需要制作中间版本,我不想分支。

在我的项目中,我可以切换功能并发货。问题是:如何在功能切换项目中使用nuget,这样如果功能关闭,我会使用组件的版本X,以及启用该功能时的版本X + 1.

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

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

编辑:

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

1 个答案:

答案 0 :(得分:0)

如果您控制NuGet源,则可以使用Pre-Release functionality

基本上你的版本控制你的Nuget包,方法是用-alpha-beta加后缀,然后在Visual Studio中勾选"包含预发布"的复选框。在你NuGet包饲料。

对于在构建服务器上使用开关,我建议您查看使用MSBuild / MSBuild社区任务/ MSBuild扩展包。

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

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

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