2016-11-29 153 views
2

比方说,我正在开发关闭的功能(即C#项目),即不准备发布。有条件地指定nuget包版本

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

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

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

在我的项目中,我可以关闭该功能并发货。问题是:如何在功能切换项目中使用nuget,例如,如果功能处于关闭状态,则使用组件版本X,并在功能打开时使用版本X + 1。

  • 我找不到的加入条件packages.config

我能想到的是,使用非释放的环境不同的饲料唯一的任何方式,但这种情况可能导致其他后勤问题。

编辑:

我建立了一个CI服务器上运行,所以我需要能够脚本它在某种程度上。

回答

0

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

实质上,您通过将它们与-alpha-beta作为后缀对Nuget包进行版本控制,然后在Visual Studio中,在NuGet包提要中勾选“包括预发行”复选框。

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

您可以使用MSBuild运行构建步骤,该步骤可以检查配置文件并修改.nuspec文件。我之前没有提供源代码,但可以使用xml/msbuild解析xml文件并对其应用更改。 IIRC一个大大的“疑难杂症”的是,你需要specifiy的.nusepc命名空间

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

当你解析nuspec file.It那么应该能够针对<dependencies>元素和后缀均与前期依赖条件 - 发布标签。

+0

对,但是我该如何控制“包括预发布”编程?我不会手动构建,我的构建在CI上运行,所以我更喜欢可编写脚本的东西。谢谢。 –

+0

使用命令行(因为你必须使用它的CI),并通过它的版本通过它每个版本 –

+0

@muhammadwaqas - 关于如何通过msbuild指定nuget包版本的任何提示将是非常棒的! –