.net 4.0 如何使.Net 4.0 Exe在运行此Exe之前要求用户下载.Net 4.0 framework/redistributable?

.net 4.0 如何使.Net 4.0 Exe在运行此Exe之前要求用户下载.Net 4.0 framework/redistributable?,.net-4.0,redistributable,autodiscovery,.net 4.0,Redistributable,Autodiscovery,我认为最新的Matlab会自动实现这一点。我已在干净的Win XP虚拟机上测试了以下exe: namespace DotNetTest { using System.Windows.Forms; class Program { static void Main(string[] args) { MessageBox.Show("Howdy!"); } } } 当我在安装了所有这些功能的计算

我认为最新的Matlab会自动实现这一点。我已在干净的Win XP虚拟机上测试了以下exe:

namespace DotNetTest
{
    using System.Windows.Forms;

    class Program
    {
        static void Main(string[] args)
        {
            MessageBox.Show("Howdy!");
        }
    }
}
当我在安装了所有这些功能的计算机上运行它时,它确实会显示消息框和窗口。当我在干净的VM上运行它时,会出现以下错误:

Title: DotNetTest.exe - Application Error
Icon: Error
Buttons: {OK}
Message Body: The application failed to initialize properly (0xc0000135). Click on OK to terminate the application.
我希望微软的天才们能做得更好。为什么不能让每个.Net exe都包含一点点开销,让它的第一个字节来检测是否安装了.Net并显示更好的消息

是否有某种设置可以翻转以修复此问题?当我创建一个新项目时,所有的设置都是VS2010提供的默认设置


谢谢。

这就是您使用安装程序的目的。在.net中,这很简单,您只需“发布”您的项目,就可以获得一个安装程序,使舒尔能够安装.net等等。应用程序本身不必担心这一点。

这就是您使用安装程序的目的。在.net中,这很简单,您只需“发布”您的项目,就可以获得一个安装程序,使舒尔能够安装.net等等。应用程序本身不必担心这一点。

正如Alexandr所说,您应该真正使用安装程序来实现这一点。如果不可能,您必须先编写一个非托管的exe来运行,然后启动.net exe或告诉用户下载框架,具体取决于框架是否已安装。

正如Alexandr所说,您确实应该使用安装程序来实现这一点。如果不可能,您必须先编写一个非托管exe来运行,然后启动.net exe或告诉用户下载框架,具体取决于框架是否已安装。

后面的选项似乎很麻烦。我真希望能给你。这很痛苦,所以除非你有具体的原因,否则我会按照阿萨德的回答中的标准方法。谢谢,霍1,你知道有没有更简单的方法吗?@Hamish Grubijan:很抱歉延迟了回答,我错过了你的评论。不,您必须先运行某种非托管exe(或者,如果您确定用户将始终使用.net 2.0,您可以编写一个2.0 exe来执行此操作)。我唯一能想到的另一个选择是研究那些工具中的一个,据说它将框架的所有需要的部分都包含在你的exe中,这样它就可以是自包含的,但是我不知道这些工具的工作情况如何,你会在更新等方面遇到问题,所以我不推荐它。后面的选项看起来很痛苦。我真希望能给你。这很痛苦,所以除非你有具体的原因,否则我会按照阿萨德的回答中的标准方法。谢谢,霍1,你知道有没有更简单的方法吗?@Hamish Grubijan:很抱歉延迟了回答,我错过了你的评论。不,您必须先运行某种非托管exe(或者,如果您确定用户将始终使用.net 2.0,您可以编写一个2.0 exe来执行此操作)。我唯一能想到的另一个选择是研究其中的一个工具,它应该将框架中所有需要的部分都包含在你的exe中,这样它就可以独立运行了,但我不知道这些工具的工作情况如何,你可能会遇到更新等问题,所以我不推荐它。