使低版本.NET framework编译的程序集运行在高版本上

上次因为使用Snippet Compiler,而发现 使Snippet Compiler运行在.NET Framework 2.0(beta1)下的方法.
实际上,进一步研究发现由于Microsoft在设计.NET Framework时考虑到向下兼容的问题,提供一个通用的方法——配置文件。任何程序集都可以通过配置文件来改变其运行时所采用的CLR版本,就是说1.0可以在1.1下,1.0和1.1可以运行在2.0下。
配置文件如下:
None.gif <? xml version="1.0" encoding="utf-8"  ?>
None.gif
< configuration >
None.gif     
< startup >
None.gif        
< supportedRuntime  version ="v2.0.40607" />
None.gif        
< requiredRuntime  version ="v2.0.40607" />
None.gif    
</ startup >
None.gif    
< runtime >
None.gif      
< assemblyBinding  xmlns ="urn:schemas-microsoft-com:asm.v1" >
None.gif         
< probing  privatePath ="bin" />
None.gif      
</ assemblyBinding >
None.gif   
</ runtime >
None.gif
</ configuration >

但是反过来是不是就不一定行了呢?用以下代码测试,结果是——向下兼容,向上不兼容。
None.gif using  System;
None.gif
public   class  Test
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
public static void Main()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        Console.WriteLine(Environment.Version);
InBlock.gif        Console.ReadLine();
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

有趣的是,如用V2.0编译的程序指定运行在v1.1下,会报下面的异常
System.BadImageFormatException
见ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemBadImageFormatExceptionClassTopic.htm

这难道说V2.0编译的执行文件的格式都不一样了? 72_72.gif

转载于:https://www.cnblogs.com/chainet/archive/2004/07/25/27154.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
无论您是一个好奇的用户,喜欢分开看看是什么让应用程序发挥作用,还是 .NET 开发人员对查找特定信息感兴趣,您都可以使用 ILSpy 来分析使用 .NET Framework 设计的软件产品,仔细检查每个组件,并找出最初组装它的用途。当然大眼仔也发布的有另外两款 .NET编译工具:dnSpy 中文版和 Red Gate .NET Reflector 中文版,如果你感兴趣也可以下载尝试。 .NET编译工具 ILSpy 中文版.NET编译工具 ILSpy 中文版 尽管有许多类似的工具可供使用,但 ILSpy 非常易于使用以及免费和开源。它不需要任何安装,这意味着它可以保存到您的便携式应用程序集合中,复制到 USB 闪存驱动器,并且可以在任何PC上使用而无需设置来浏览和检查 .NET 程序集。 使用此工具仔细查看.NET程序集 主应用程序窗口具有清晰的布局,分为两个主窗格:用于浏览 .NET 程序集树以及仔细查看任何选定项目。它可以检查 DLL,EXE 和 WINMD 文件(Windows 元数据)。可以从 GAC 加载数据,也可以打开 Nuget 包。 ILSpy 能够使用 C# 在 C#,IL 和 IL 中呈现代码。对于 C#,您可以选择 C#1.0/VS .NET 到 C#7.2/VS 2017。例如,您可以查看资源和引用,查看表以及将信息提取到文件。 使用 C# 在 C#,IL 和 IL 中呈现代码 由于该程序仅用于查看目的,因此无法进行文件修改。另一方面,您可以在查找类型,成员,方法,字段,属性,事件,常量或元数据标记时利用搜索功能。 可以配置多个反编译器设置,例如使用调试符号中的变量名称,删除无死区和副作用的代码,或者在反编译后扩展成员定义。此外,您可以自定义字体并允许多个实例。 考虑到所有方面,IlSpy 尽可能简单地反编译 .NET 程序集,看看是什么让软件变得简单。由于它是开源的,开发人员可以随意修改和使用其代码。
要发布一个 .NET Framework 程序,可以按照以下步骤进行操作: 1. 编译程序:首先,确保你的程序已经完成开发并进行了测试。然后使用 Visual Studio 或者命令行编译器(如 csc.exe)编译你的程序。编译后会生成一个或多个可执行文件和相关的依赖文件。 2. 配置发布选项:在 Visual Studio 中,你可以使用“发布”功能来配置你的发布选项。这包括选择目标平台(x86、x64 或 AnyCPU)、选择发布模式(发布或调试)以及指定输出路径等。 3. 处理依赖项:如果你的程序依赖于其他程序集或库文件,确保这些依赖项也包含在发布文件夹中。你可以手动将这些文件复制到发布文件夹中,或者在 Visual Studio 的“发布”选项中设置自动复制。 4. 发布程序:使用 Visual Studio 的“发布”功能,选择你的发布配置并点击“发布”按钮。这将在指定的输出路径中生成一个包含可执行文件和依赖项的文件夹。 5. 测试发布版本:在发布文件夹中找到生成的可执行文件,并在目标计算机上进行测试。确保程序在目标环境中能够正常运行,并且所有的依赖项都能正确加载。 6. 部署程序:如果你希望将程序部署到其他计算机上,可以使用安装程序(如 Windows Installer 或 Inno Setup)来创建一个安装包。这个安装包将包含你的程序及其依赖项,并提供一个简单的界面来安装和卸载程序。 以上是一个基本的 .NET Framework 程序发布的流程。根据你的具体需求和环境,可能还需要进行一些其他的配置和步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值