使低版本.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
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值