C# 通知用户.exe针对的是比当前安装的.NET更新的版本

C# 通知用户.exe针对的是比当前安装的.NET更新的版本,c#,.net,winforms,C#,.net,Winforms,对于一个简单的.exe应用程序,是否可以针对一个比最终用户计算机上安装的版本更新的.NET framework版本,并在启动应用程序时通知最终用户他/她需要安装一个更新版本的.NET才能使用该应用程序 在正常情况下,当启动为比当前安装的.NET版本更新的.NET版本编译的.NET.exe时,似乎有时会弹出一条可理解的消息,说明要运行应用程序,必须首先安装.NET Framework的X版本。这很好。但是,它不一定会通知安装正确/需要的版本(请参阅下面的屏幕截图,其中说明即使需要4.6,也要安装4

对于一个简单的.exe应用程序,是否可以针对一个比最终用户计算机上安装的版本更新的.NET framework版本,并在启动应用程序时通知最终用户他/她需要安装一个更新版本的.NET才能使用该应用程序

在正常情况下,当启动为比当前安装的.NET版本更新的.NET版本编译的.NET.exe时,似乎有时会弹出一条可理解的消息,说明要运行应用程序,必须首先安装.NET Framework的X版本。这很好。但是,它不一定会通知安装正确/需要的版本(请参阅下面的屏幕截图,其中说明即使需要4.6,也要安装4.0.30319),其他时候,弹出的消息似乎只是一个一般的CLR错误,没有解释是由于安装了错误的.NET版本

是否有任何聪明的方法向最终用户生成/显示一致/可靠、更有意义或定制的消息,这样他/她就永远不可能只收到一般CLR错误或消息,说明需要.NET版本,但说明要安装的版本错误

当应用程序针对.NET 4.6时,安装了.NET 3.5.1的Windows 2008R2:

当应用程序针对.NET 4.6时,安装了.NET 4.5的Windows 2012R2:


您可以编写一个启动前程序,检查windows系统以查看安装了什么。然后你可以弹出任何你想要的警告,或者如果一切正常,那么就启动你的主程序


另外,正如Lex Li所发布的,您可以创建一个安装包。我们在我工作的地方使用Inno安装程序,它是免费的,而且非常全面。

人们为此目的创建安装程序(MSI或您喜欢的任何其他技术)。我知道。然后,像我这样特别不想使用安装程序的人来到SO,询问社区是否有人可以通过一个.exe巧妙地实现这一点。你没有什么好办法(除非你决定自己编写本机应用程序并托管CLR,这只会增加你自己的责任)。谢谢。我可能会按照@ZedLepplin的建议创建某种包装器/预启动,除非其他人有不同的/更好的想法。这可以用一个.exe完成吗?或者您必须将main.exe包装在pre-launch.exe中。比如让pre-launch.exe进行检查,然后如果一切正常,它可以吐出main.exe以供继续/将来使用。我本来希望避免将两个.exe捆绑成一个,但这是我能想到的唯一方法,除非你能解释如何将它们都作为一个.exe来完成。一个快速的谷歌找到了这个链接:-。一个exe的问题之一是它会针对一个特定的.net框架。因此,您的程序可能会与您已经遇到的问题相冲突。发射前计划可以用来回避这个问题。但是,为了避免.net问题,理想情况下,它将使用不使用.net的东西编写。关于一个exe问题,您可以使用应用程序打包器。这允许您将任何需要的内容捆绑到一个exe文件中。我用这个:-