代码之家  ›  专栏  ›  技术社区  ›  Joan Venge

为什么微软没有将C#、.NET、CLR分支用于主要更改(水平版本控制)?

  •  1
  • Joan Venge  · 技术社区  · 15 年前

    这与新版本不同,新版本仍然具有向后兼容性。

    我的意思是,当C#、.NET、CLR的设计者意识到他们犯了一个错误,或者他们忽略了一些可能非常有益的东西,但是现在他们因为向后兼容而无法继续,他们可以通过以不同的方式指定它(水平版本控制)来分支适当的产品,比如说like。

    你可以说这将是一场噩梦,但是会有一些限制,比如不能混合和匹配不同的分支,不同的语言彼此兼容,等等(在同一分支中)。

    这难道不是一个健康的发展战略,新项目总是可以开始使用最新和最好的语言,也就是某一特定语言的最新版本和最新分支(例如C#6.0 B4)?

    我看不出有任何额外的麻烦来跟踪新语言的情况,因为您已经知道每个版本的情况。因此,这只是在垂直版本控制中添加了另一个维度(水平版本)。

    3 回复  |  直到 10 年前
        1
  •  2
  •   kvb    15 年前

    对于一个平台来说,拥有大量的库是一个巨大的好处。目前,如果我编写一个.NET4.0应用程序,我可以引用早在.NET1.1上创建的库。这意味着我可以利用很多现有代码,这是.NET的主要卖点之一。

    如果我正确理解你的建议,那么如果库A是针对C#4.0B1编写的,库B是针对C#4.0B2编写的,那么,我的应用程序就不可能同时引用库A和库B。这将使平台变得支离破碎,使编写C#应用程序或库的投资变得更加困难。

        2
  •  1
  •   Jon Hanna    15 年前

    事实上,这有点像开源批评者过去认为开源项目最终会走向成功的方式。毕竟,你、我或其他任何人都可以接受任何开源项目,并在明天将其引入另一个分支。

    谢天谢地,这将在社区中获得任何吸引力的唯一情况是,我们要么将其纳入专家rle(这样它就不会真正与原始项目竞争,只是建立在一个共同祖先的基础上),要么对原始项目的运行方式存在巨大的不满(在开源政治中,这是一种核打击选项)。

    它被用作反对开源的妖怪论据的原因是,不可能跟踪给定库、框架、语言、组件等的哪个版本的哪个版本的哪个版本的哪个版本的哪个版本可以与另一个版本的哪个版本的哪个版本的哪个版本一起工作。

    幸运的是,无论是开放还是关闭,这些分支机构都会在“市场”(无论该市场是否经济)面前自然死亡。

        3
  •  1
  •   Steve Townsend    15 年前

    许多(更大的)商店已经很难跟上已经发布的.Net的主要修订版。这种策略可能适用于一个不是全球主流开发平台的平台,但对于微软(和许多开发人员)来说,这将是地狱。

    你可以反驳说,没有人必须采用最新的。但是,谁不在Windows SPs发布后立即安装它们,以避免安全问题的修补程序滴水不漏?人们自然倾向于想要最新的,尽管这必须与稳定问题相平衡。

    Net已经很好地从Windows开发者词典中删除了DLL地狱,并且在某种程度上使开发者平台进程与操作系统版本解耦。我认为大多数Windows开发人员并不急于看到这种变化。不管你喜欢还是讨厌它们,微软已经非常擅长管理大型的、不经常发布的、仍然是世界上最流行的软件 事实上