在阅读了多篇博客之后,我对“多目标”或“并行执行”的术语感到很困惑。
一些博客说,并行执行意味着一个进程中有两个版本的CLR。另一些人则声称,这类似于.NET 2.0和.NET 3.0程序集并行执行。我非常失望,不确定谁是对的谁是错的。
我还看到许多博客文章,比如Scott Hanselman的博客等(这让我很困惑),它们说如果目标框架是4.0,那么.NET 4.5的任何功能都将无法使用。我可以同意这一点。但我不能同意或理解这样一个事实:在4.5中修复了4.0中的某个问题的功能,如果我在4.5中构建并在4.0中部署,将会被“隐藏”。我不理解“隐藏”这个术语,也没有人敢解释其真正含义。这是运行时错误吗?编译时错误吗?不可能是这样的。这是否意味着不一致的行为?异常?如果是这样,我想知道为什么微软允许在VS开发中出现这种灵活性。它有任何作用吗?我理解第一种情况是有意义的,但不理解或同意第二种情况。
我还看到Rick/Scott Hanselman的文章中说,重大改变意味着完全升级,包括CLR。那么,我应该将3.0视为重大升级,但它并不是,因为它仍使用.NET 2.0 CLR。那么为什么命名术语是3.0.x.x/3.5.x.x?就像.NET 4.0.30319.x中的情况一样,其中CLR也是新的,所以我同意这一点。我很惊讶谁是正确的。这些人还是MSDN都违背了他们的原则(就像MSDN说格式为Major.Minor.Build.Revision,而Hanselman或其他人说,Major表示CLR升级,而在.NET 3.0中并没有这个情况)。
参考: http://www.hanselman.com/blog/NETVersioningAndMultiTargetingNET45IsAnInplaceUpgradeToNET40.aspx
http://msdn.microsoft.com/en-us/library/bb822049(v=vs.110).aspx
对于以上两个问题,您有什么想法?
该文章讨论了.NET版本控制和多重目标设置的问题,并指出.NET 4.5是.NET 4.0的就地升级。 MSDN链接提供了关于使用Visual Studio和.NET Framework进行开发的详细信息。