为什么我的.NET 4应用程序知道.NET 4没有安装

我开发了一个针对.NET 4的应用程序,XCOPY将它安装到Windows XP机器上。 我告诉了机器的主人,他们需要安装.NET Framework 4来运行我的应用程序,他告诉我他做的(不是一个可靠的来源)。 当我运行的应用程序,我被提出了一个消息框,说这个应用程序需要.NET Framework 4,我想安装它? 单击“是”button将我带到Microsoft网站,稍后点击几下.NET 4,应用程序成功启动。

过去,将XCOPY-安装.NET应用程序安装到没有安装正确版本的.NET的机器上导致应用程序在启动时崩溃,而没有提供给用户的有用信息。 这次为什么不一样?

  1. 它是否内置于我的应用程序,因为我的目标是.NET X?
  2. 它是否已经安装在目标机器上?

我喜欢这个function。 我想知道如何利用它在未来。

这是一个非常保守的秘密。 当你的目标是.NET 4,用户在没有安装.NET 4的情况下运行这个应用程序的时候会发生这种情况。 或者,当您定位较早的版本并在Windows 8上运行应用程序时,用户将看到以下对话框:

在这里输入图像描述

有点太gobbledegooky也许,但不错。 在这篇博客文章中有很好的描述。

请记住,.NET 4具有最低的Windows版本和服务包要求。 最低要求是XP SP3,Vista SP1,Win7 RTM。 所以这不是一个得到正确的服务包安装的神奇解决scheme。