当 .NET Core 托管包的版本落后于开发机器版本时会发生什么

What happens when .NET Core hosting bundle's version is behind development machine versions

情况

今天 .NET Core 2.1 中存在一个安全漏洞,我们让所有开发人员将他们的 .NET Core 2.1.x 更新到 .NET Core 2.1.10,但不知道什么时候我们会得到围绕更新我们的生产 Web 服务器上的 .NET Core 托管包。

问题

  1. 我们更新开发人员机器的事实是否因为我们尚未更新网络服务器而变得无效?
  2. 一旦我们的开发人员的代码被推送到生产环境中,这些应用程序 运行 将针对我们网络服务器上的旧版 .NET Core 库,或者它们会以某种方式 运行 在我们的新版本中开发机器正在使用?
  3. 如果我们的项目曾经在较旧版本的 .NET Core 库下投入生产 运行,我们是否会 运行 陷入兼容性问题,因为我们的开发人员是针对较旧版本构建的?
  4. 我想我的最终问题是,在我们更新我们的开发机器之前,我们公司是否应该始终有一个政策来更新我们网络服务器上的托管包?
  1. 如果您想从 .NET Core 2.1.x 到 .NET Core 2.1.10 的更新中受益,我会说:虽然您不更新服务器,是的。

  2. 应用程序将尝试 运行 在服务器上安装的框架下。如果您使用默认模式发布,您的代码将取决于安装在生产机器上的框架。但是,您可以更改为 自包含部署 模式并将框架与您的代码一起嵌入 "targeted platform" (https://www.danielcrabtree.com/blog/496/net-core-self-contained-and-framework-dependent-deployments-explained).

  3. 应该保持兼容,因为版本都是2.1.x。但是,在单独的环境中测试之前,我不会在生产中尝试它。

  4. 我认为您在先测试新版本之前不应该更新您的生产服务器。我会在我的开发机器上更改目标框架,然后我会在(至少)预生产环境中更新框架和代码。我会在这个环境中测试它。只有到那时,我才会考虑对生产服务器进行更改。

第 3 点。根据 Daboul 评论编辑