我无法访问IIS服务器,但我被告知该网站已配置为使用.NET Framework 1.1版运行。当我使用Telerik JustDecompile时,我会看到以下内容。
“NET 1”似乎表明2个dll是针对FW 1.1版进行编译的。网站dll“GLSS”旁边的“ANY”是否表示该网站可以针对Web服务器上安装的任何版本的.NET FW运行?
为了准备升级到2.0,我已经要求网站管理员将网站配置更改为FW的2.0版本,我很惊讶我认为运行1.1代码的网站仍然有效。我应该感到惊讶吗?
这只是一个向后兼容性的简单示例,并且该站点可以配置为使用任何版本的框架,只要它等于或高于代码编译使用的版本?
当我查看解决方案中项目的属性页时,我很惊讶,仅对于网站项目,我无法找到设置要编译的FW版本的位置。我能够为引用的项目找到它。
您能否帮助我更好地理解网站配置的版本与编译程序集的版本之间的关系?
答案 0 :(得分:1)
你不应该感到惊讶,.NET总是向后兼容,因为在某种意义上,针对运行时版本编译的程序集应该针对较新版本的运行时运行。
当然存在微妙的问题,其中事物不向后兼容,从细微的语义差异开始,到对象契约级别的变化结束(预期的方法/类不再存在),但一般来说这些问题依赖于您的应用程序的复杂性。可以安全地假设简单的应用程序应该没有问题。
程序集已被编译的运行时数是程序集元数据的一部分,可以使用反射读取它。因此,在运行时,您至少有两个可能的运行时版本 - 编译程序集的编译版本以及执行代码的运行时的当前版本。