VS如何让您选择以前的.NET framework?

VS如何让您选择以前的.NET framework?,.net,visual-studio,.net,Visual Studio,当最新版本是早期版本的就地替换版本时,Visual Studio如何允许您选择早期的.NET framework版本。例如,假设我安装.NET 4.6,它是.NET 4、4.5、4.5.1和4.5.2的就地替代品,当我选择要使用的版本4时,会发生什么情况?通过选择旧版本,您将无法使用框架的最新功能。 但是,如果您不需要这些功能,例如,通过选择版本4,您的应用程序中没有安装最新版本框架的用户将能够使用它,而无需安装版本4.5.2或4.6。在C:\Program Files(x86)中\Refere

当最新版本是早期版本的就地替换版本时,Visual Studio如何允许您选择早期的.NET framework版本。例如,假设我安装.NET 4.6,它是.NET 4、4.5、4.5.1和4.5.2的就地替代品,当我选择要使用的版本4时,会发生什么情况?

通过选择旧版本,您将无法使用框架的最新功能。 但是,如果您不需要这些功能,例如,通过选择版本4,您的应用程序中没有安装最新版本框架的用户将能够使用它,而无需安装版本4.5.2或4.6。

C:\Program Files(x86)中\Reference Assemblies\Microsoft\Framework\.NETFramework
有些“引用程序集”与旧版本具有相同的公共API,但没有任何实现


当您编写代码时,IntelliSense正在使用这些参考版本向您显示哪些可用,哪些是编译器错误。但是,当实际编译代码时,“已安装”版本就是实际使用和编译的版本。他们之所以能够做到这一点,是因为他们对进行就地升级的版本保持100%的向后兼容性,因此针对4.6 API编写的任何内容都将在4.6 API中编译而不会出错。

您有两个不同的方面:

  • 您的目标是.NET Framework的哪个版本?您可以在属性中将其设置为目标框架
  • 应用程序运行时使用的.NET Framework版本是什么
  • 由于某些版本已经安装到位,即使您的目标是4.0(例如),并且安装了4.5,应用程序也会使用4.5运行

    在这种情况下,VisualStudio会发生什么?答案是不同版本有参考程序集。这样,VisualStudio就知道哪些程序集、方法等应用于选定的目标框架,并且只提供这些程序集、方法等


    请注意,应用程序(如我上面所写)实际上可能在4.5中运行。因此,当你瞄准4.0时,虽然你不能直接使用它的新功能,但你可以通过反射来使用它们(但为什么要这样做呢?),并且可能会遇到4.5中的bug和bug修复,而不是4.0中的bug和bug修复。

    它只是确保你不会意外地使用任何4.5+功能。因此,您的程序仍然运行在只安装了4.0的机器上。有趣的是,我一直认为它使用了所选的较旧的.NET framework,而不仅仅是较新的。不过这样做是有道理的。