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

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

概述我的项目是针对.NET 4.5.它不使用任何新的4.5方法,所以它实际上只在安装了.NET 4.0的机器上正常工作. 在我添加一些扩展方法和反射之前,这一切都很好.然后当我在4.0机器上运行这个.NET 4.5程序时,它失败了“System.TypeLoadException:无法从程序集mscorlib加载类型’System.Runtime.CompilerServices.ExtensionA 我的项目是针对.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 @R_502_3974@ 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的机器上安全运行.

总结

以上是内存溢出为你收集整理的c# – 使用.NET 4.5构建的应用程序可以在.NET 4.0上运行吗?全部内容,希望文章能够帮你解决c# – 使用.NET 4.5构建的应用程序可以在.NET 4.0上运行吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1242502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存