我的 .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/