c# – 使用.NET 4.5构建的应用程序可以在.NET 4.0上运行吗?

我的项目是针对.NET 4.5.它不使用任何新的4.5方法,所以它实际上只在安装了.NET 4.0的机器上正常工作.

在我添加一些扩展方法和反射之前,这一切都很好.然后当我在4.0机器上运行这个.NET 4.5程序时,它失败了“System.TypeLoadException:无法从程序集mscorlib加载类型’System.Runtime.CompilerServices.ExtensionAttribute’”.着名的ExtensionAttribute程序已经很好地记录了here.

另一种快速测试方法是添加以下行.然后程序将仅在.NET 4.0上运行时抛出异常.

Console.WriteLine(typeof(System.Runtime.CompilerServices.ExtensionAttribute).Assembly.FullName);

我想知道是否有办法解决它.例如,ILMerge(当使用链接中记录的正确/ targetplatform选项时)实际上将ExtensionAttribute从mscorlib更改为System.Core(如果项目是针对.NET 4.0(安装了4.5)).但它似乎不适用于针对.NET 4.5的项目.

我知道这是一个很长的镜头.但只是想知道是否有人有其他想法,因为它是如此接近.

谢谢.

解决方法

一般来说,这不起作用.它在某些情况下确实有效,因为4.5是4.0的替代品,但它一般不会起作用.我个人已经看到了已经移入不同程序集的类型的问题,并且绑定设置不正确,就像你看到的那样.反射类型不是4.5中移动的唯一类型.

My project is targeting to .NET 4.5. It doesn’t use any new 4.5 methods,so it actually works fine on the machine with only .NET 4.0 installed.

如果是这种情况,您可以将应用程序更改为目标.NET 4.0.这应该允许它在只安装了.NET 4的机器上安全运行.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...