【问题标题】:Servicestack nuget versioningServicestack nuget 版本控制
【发布时间】:2023-12-02 12:11:01
【问题描述】:

不到 3 个月前,我们开始使用 servicestack v4 构建不同的项目。

我们在 4.0.52 版本安装了不同的 servicestack 包(servicestack.Common、servicestack.Interfaces、servicestack.Client 等)

由于一些安装/更新,我们只升级了 4.0.54 的 servicestack.Interfaces,这导致了这个错误:

“ServiceStack.JsonServiceClient”类型中的方法“PostFilesWithRequest” 从程序集'ServiceStack.Client,版本=4.0.52.0,文化=中性, PublicKeyToken=null' 没有实现。

将所有服务堆栈包升级到4.0.54后,它解决了错误(在新版本的IRestClient中他们添加了新定义)。

我的问题是:

  • servicestack 如何处理其发布的版本控制?
  • 我们是否必须在每次发布新版本时升级所有 servicestack 包?

我认为他们使用语义版本控制,但似乎并非如此(补丁应该向后兼容)

我知道我的问题听起来更像是抱怨,但我很确定我不是唯一一个遇到这个问题的人:

Could not load type 'ServiceStack.IUrlFilter' from assembly 'ServiceStack.Interfaces...'

ServiceStack NuGet update 4.0.22 to 4.0.31 caused errors on deployment

我们还开始开发一个servicestack api,将不同的服务组合成一个插件,这可能会给维护带来麻烦。 也许我们必须想出一种独特的方式来一次处理所有这些更新。

【问题讨论】:

    标签: c# .net version-control servicestack versioning


    【解决方案1】:

    缺少方法异常是由于同时运行来自不同版本的脏包。您需要确保所有项目中的所有包都引用相同的版本。由于客户端没有二进制耦合,因此客户端不必具有​​与服务器库匹配的相同版本,但仍然建议遵循,因为一些新的客户端功能可以依赖于同时发布的新服务器功能。

    ServiceStack 不会向 NuGet 提供次要补丁,每个 NuGet 版本都是一个主要版本,中间版本的任何修复都会在 MyGet pre-release packages 上发布。

    ServiceStack 官方 NuGet 包同步部署,ServiceStack 的所有 60 个 NuGet 包都以相同的版本同时发布。每个版本都有可能在任何一个修改后的 ServiceStack 包中进行非向后兼容的更改,因此它们都应该同时升级。

    【讨论】: