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

24
我前几天开发了一个针对.NET 4的应用程序,并将其复制安装到了一台Windows XP机器上。我告诉该机主他需要安装.NET Framework 4才能运行我的应用程序,但他告诉我他已经安装了(不是很可靠的消息来源)。当我运行应用程序时,出现了一个消息框,说这个应用程序需要.NET Framework 4,我要安装吗?点击“是”按钮后,我被带到了微软网站,几次点击后.NET 4被安装了,并且应用程序成功启动。
在过去,如果将.NET应用程序复制到未安装正确版本.NET的计算机上,该应用程序将在启动时崩溃,并且没有向用户提供有用信息。为什么这次不同呢?
以下是可能的解释:
  1. 是否因为我选择了.NET X作为目标平台而将其构建到我的应用程序中了?
  2. 是否因为目标计算机上已经安装了某些东西?
我喜欢这个功能,想要知道如何在将来精确地利用它。
1个回答

22

这是一个相当保密的秘密。当您针对.NET 4进行目标设置,而用户在没有安装.NET 4的情况下运行应用程序时,它将会发生。或者当您针对较早版本进行目标设置并在Windows 8上运行应用程序时也会出现这种情况。用户将看到此对话框:

输入图像描述

可能有点难以理解,但还是不错的。这在此博客文章中有很好的描述。

请记住,.NET 4具有最低的Windows版本和服务包要求。最低要求为XP SP3、Vista SP1和Win7 RTM。因此,这不是获取正确服务包安装的魔法解决方案。


我有一些客户仍在使用Windows 2000,这就是为什么我的大部分应用程序都是2.0版本的原因。但是这个问题是在XP机器上观察到的,而不是在Windows 7上。你能解释一下吗? - Tergiver
文章指出,这适用于Windows 7及更早版本,因此包括XP。它简单地说明,在Windows 8上使用Framework 4.5可以改善此错误的用户体验。 - rskar
2
这篇MSDN文章中还有更多信息。http://msdn.microsoft.com/en-us/library/w671swch.aspx - djdanlib
@HansPassant 在没有安装.NET v4.0的Win7上,当我尝试运行v4.0应用程序时,我看到了与您答案中非常相似的消息,但“是否要...”部分被替换为“联系您的应用程序发布者以获取适当版本的.NET Framework的说明”。并且只有一个OK按钮,有什么想法吗?这种行为可能取决于某些win更新或类似的东西吗...?FYI,在不同的Win7机器上,这个工作正常,并且我的应用程序配置包含<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/> - Michal Hosala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接