如何使生成的EXE在所有.net框架版本中工作

本文关键字:框架 net 版本 工作 何使生 EXE | 更新日期: 2023-09-27 18:11:52

我是。net世界的新手,我有一个小的控制台项目(非常小),基本上只是引用在delphi中创建的。dll(其中大多数重要的代码),在我的c#代码中,我只有循环,线程睡眠指令和类似的东西。

我的客户使用的是微软Windows XP SP2,微软XP SP3,微软Windows Vista和微软7。我希望生成的。exe能够在所有这些环境中运行。在我使用c# 2010的开发环境中,我使用的是。net框架4.0,但我猜我客户的一些桌面使用的是框架3.5甚至更老的框架。基于这种情况,在。net的新旧版本中创建最便携的EXE的最佳选择是什么?

因为我是初学者,所以非常欢迎详细的答案。

因为它可能是我的简单代码,所以我把它粘贴在这里。

    using System;
    using System.Reflection;
    using System.Threading;
    using System.Web;
    using System.Diagnostics;
    using Redemption;
    namespace test{
class Program
{
    static void Main(string[] args)
    {

        RedemptionLoader.DllLocation64Bit = @"redemption64.dll";
        RedemptionLoader.DllLocation32Bit = @"redemption.dll";
        var ToEmailAddress = args[0];
        var subject = args[1];
        var pathFileAttach = args[2];
        SendMail(ToEmailAddress, subject, pathFileAttach);
    }
    private static void SendMail(string ToMail,string subject,string filePath) 
    {
        var session = new RDOSession();
        try
        {
            session.Logon();
            if (session.LoggedOn)
            {
                var Drafts = session.GetDefaultFolder(rdoDefaultFolders.olFolderDrafts);
                RDOMail msg = Drafts.Items.Add("IPM.Note");
                var body = "Test Redemption.";
                msg.To = ToMail;
                msg.Recipients.ResolveAll();
                msg.Subject = subject;
                msg.Body = body;
                msg.Attachments.Add(filePath);
                msg.Save();
                msg.Send();
                System.Threading.Thread.Sleep(5000);
            }
        }
        finally
        {
            session.Logoff();
            session = null;
        }
    }
}
}

如何使生成的EXE在所有.net框架版本中工作

以。net 2.0为目标框架进行开发和构建,它将与未来所有版本兼容。

在项目菜单中,你可以选择你想要使用的。net版本(如Chris所说,使用2.0)。但是要小心,因为有时这样做可能需要一些调整。

请参阅此处查看可能对您很重要的更改列表

同样值得注意的是,在项目属性下,您可以选择运行应用程序所需的依赖项。它将检查并允许用户获取这些依赖项,例如框架的某个版本,然后才允许安装进度。

请注意,. net框架的v1.0和1.1是非常难以确保兼容性的。尽管。net框架的所有版本在技术上都是向后兼容的,但首先,1.0/1.1是非常基础的(它们甚至没有泛型类型),其次,当v2.0发布时,某些语言和实现细节发生了重大变化,实际上可能与2.0后的框架不兼容。微软强烈建议所有。net 1.1。程序被重新编译为2.0目标

虽然在这种情况下,针对框架的2.0版本可能是一个好主意,因为你有一个相当简单的应用程序,你还应该创建一个安装程序,它将检测客户端已安装的。net版本,并在需要时安装正确的版本。

有很多方法可以做到这一点,但是ClickOnce是Visual Studio的一部分,非常容易设置。它不会创建一个大的安装exe,因为它在运行时从微软下载了所需的。net版本。

构建的框架越低,应用程序的可移植性就越强。您可以基于什么框架构建取决于您在代码中使用的框架。正如其他人所指出的,请记住,其中一些操作系统仍然需要安装相关的。net框架,因为它不包括在内。

。NET 2.0通常被认为是通用的框架。大多数代码示例都是用2.0编写的。然而,你需要意识到,你不应该假设。net是默认安装的。一些较旧的机器将不得不安装它。到目前为止,很少有人没有至少2.0版本,但我不会做出这样的假设,除非您愿意冒险让人们无法安装您的软件并且不知道原因。Windows XP默认不附带。net。