asp.net - 使用特定的 .NET 版本进行编译是否有任何好处?

标签 asp.net .net deployment compilation version

我的 .NET 程序集用于在 .NET 2.0、3.5、4.0、4.5 上运行的各种项目。 4.5.1、4.5.2、4.6.1、4.6.2。

除了 .NET 2.0 提供的功能外,我的 .NET 程序集不使用任何功能。

我应该使用哪些 .NET 版本编译我的 .NET 程序集?看起来只有 2 个版本有意义:.NET 2.0 和 .NET 4.0。使用任何其他 .NET 版本进行编译是否有任何好处?

最佳答案

区分 .NET Framework 版本和 Common Language Runtime 版本可能是个好主意

公共(public)语言运行时

Common Language Runtime (CLR) 是负责在目标机器上运行平台独立 IL 代码的组件。您需要针对您需要支持的所有 CLR 版本编译您的应用。

在撰写本文时有以下 CLR 版本:

  • 4.0
  • 2.0
  • 1.1
  • 1.0

.NET 框架

.NET Framework 版本基本上是构成 .NET 的系统程序集的版本。每个版本的 .NET 都设计用于针对特定版本的 CLR,但不止一个 .NET 框架版本使用相同版本的 CLR。例如,.NET 4.0、4.5 和 4.6 使用 CLR 4.0。

您可以在此处查看 .NET Framework 的版本以及它们使用的 CLR 版本:https://msdn.microsoft.com/en-us/library/bb822049(v=vs.110).aspx

如果您已经针对针对相同 CLR 版本的旧 .NET 版本进行构建,则无需针对较新版本的框架重建您的库。引用的任何系统程序集都应该通过以下方式之一升级以确保向后兼容性:

  • “安全”就地升级,其行为方式与以前的版本相同,除非代码特别选择了新行为(例如,通过调用新方法、实例化新类等)。

  • 添加一个新程序集。因为 .NET Framework 使用版本号作为名称绑定(bind)的一部分,即使 AppDomain 中的其他库正在引用具有相同名称的较新版本,您仍将获得编译时所针对的版本。

请注意,相反的情况不起作用。您永远不能假设您的类库适用于比编译版本更旧的 .NET 版本,即使 CLR 版本相同也是如此。

关于asp.net - 使用特定的 .NET 版本进行编译是否有任何好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37304255/

相关文章:

c# - 使用 ASP.NET 生成可以在 Android 上下载的 vCard

c# - 如何在 GridView 的 CommandArgument 中传递多个参数?

c# - 在 .net Windows 窗体中保留字符串值

.net - 如何在启动时运行一次单击一次部署的应用程序?

windows - 我已经在 Windows Azure 上成功部署了 MVC3 网站,但它不起作用

c++ - 部署qt mysql应用程序

c# - 按百分比从 ASP.NET 集合中选择项目

c# - 从 ASP.NET 应用程序访问 Azure 存储帐户文件共享

c# - BitVector32的CreateMask函数有什么作用?

c# - 沿 Windows 应用程序部署 Postgresql