繁体   English   中英

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

[英]Can application built with .NET 4.5 run on .NET 4.0?

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

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

另一种快速测试方法是添加以下行。 然后程序将仅在.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中移动的唯一类型。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM