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

但是反过来是不是就不一定行了呢?用以下代码测试,结果是——向下兼容,向上不兼容。
使低版本.NET framework编译的程序集运行在高版本上using System;
使低版本.NET framework编译的程序集运行在高版本上
public class Test
}

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

这难道说V2.0编译的执行文件的格式都不一样了?使低版本.NET framework编译的程序集运行在高版本上

相关文章:

  • 2021-12-20
  • 2022-12-23
  • 2021-06-19
  • 2021-08-02
  • 2022-12-23
  • 2021-07-19
  • 2021-12-22
猜你喜欢
  • 2022-12-23
  • 2022-01-18
  • 2021-12-09
  • 2022-12-23
  • 2022-12-23
  • 2021-10-10
  • 2022-12-23
相关资源
相似解决方案