针对.net framework的多个版本

针对.net framework的多个版本,.net,compilation,version,.net,Compilation,Version,假设我有一些代码,理论上可以针对.net framework的任何版本进行编译。想一想“你好,世界”,如果你喜欢的话 但是,如果我真的编译代码,我会得到一个针对某个特定版本运行的可执行文件 是否有任何方法来安排事情,使编译后的exe只运行在它找到的任何版本上?我强烈怀疑答案是否定的,但我很高兴被证明是错的 编辑:好吧,我走到楼梯脚边。我不知道后来的框架会高兴地运行在早期版本下编译的exe。谢谢所有的回复 阅读斯库特古关于 我们正在进行的重大变革之一 从VS2008版本开始是 支持我们所说的 “

假设我有一些代码,理论上可以针对.net framework的任何版本进行编译。想一想“你好,世界”,如果你喜欢的话

但是,如果我真的编译代码,我会得到一个针对某个特定版本运行的可执行文件

是否有任何方法来安排事情,使编译后的exe只运行在它找到的任何版本上?我强烈怀疑答案是否定的,但我很高兴被证明是错的



编辑:好吧,我走到楼梯脚边。我不知道后来的框架会高兴地运行在早期版本下编译的exe。谢谢所有的回复

阅读斯库特古关于

我们正在进行的重大变革之一 从VS2008版本开始是 支持我们所说的 “多目标”-这意味着 VisualStudio现在将支持 针对多个版本的 NET框架,开发人员将 能够开始利用 VisualStudio提供的新功能 而不必总是升级他们的 现有项目和已部署项目 要使用新版本的 NET框架库

现在,当您打开现有项目时 或者用VS2008创建一个新的,你 可以选择.NET的哪个版本 要使用的框架-和IDE 将更新其编译器和 与此匹配的功能集。在…之间 其他事情,这意味着 功能、控件、项目、, 项目模板和程序集 不适用于此的引用 该框架的版本将是 隐藏,当你建立你的 你可以申请 编译输出并将其复制到 只有旧版本的计算机 安装的.NET Framework的名称,以及 您将知道应用程序将 工作


这样,你就可以使用VS2008来开发既能在.NET 2.0、3.0和3.5上运行的.NET 2.0项目。我不确定这是否正确,但我会尝试将其编译为最低版本,较高的版本应该能够运行较低版本的exe。

在多目标方面,框架是向后兼容的,因此编译成1.0的东西将在1.1和2上运行。在1.1上编译的某些东西将在2上运行。。。等等。

我知道在.Net类库方面是正确的。您可以根据.NET1.1编译类库,然后在.NET2.0或更高版本的项目中使用它

我怀疑可执行文件也是如此。

对于2005和2008,是的(在CLR 2.0上)

2003年,没有。。因为它编译为CLR 1.1


从理论上讲,您可以使用#if(DOTNET35)编写一些代码,这样您就不会使用编译器知识之外的功能,然后在应用程序上运行所需的编译器。。。不过我怀疑这是否有用。

好吧,好吧,所有.NET版本(1.x版除外)都编译成相同的字节码。对于C#,所有新特性都只是语法糖,在编译时会转换为C#2.0结构。 出现问题的关键点是使用C#3.0或3.5特定DLL时。它们在.NET2.0框架下不能很好地工作,因此您不能使用它们


我真的想不出一个解决方法,抱歉:(

关于用户安装的.NET framework的主题,还有一个新的客户端配置文件选项,可用于.NET 3.5 SP1。这基本上允许您提供一个小型(277k)引导程序,用于下载和安装所需的文件(完整.NET框架的子集)


有关创建小型.NET安装的更多信息和一般提示,请参阅此大图。

如果我想利用较新框架版本的某些功能,但仍能在较旧版本上运行该程序,该怎么办?在这种情况下,正确的方法是什么?可能并不总是这样。我针对出于同样的原因,Windows 8.0+默认情况下没有安装2.0-3.5(需要从“添加或删除功能”激活)。