gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:58:55 25 4
gpt4 key购买 nike

我的项目面向 .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);

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

我知道这是不可能的。但只是想看看是否有人有其他想法,因为它是如此接近。

谢谢。

最佳答案

一般来说,这是行不通的。它在某些情况下确实有效,因为 4.5 是 4.0 的就地替代品,但它一般不会起作用。就个人而言,我已经看到移入不同程序集的类型存在问题,并且绑定(bind)设置不正确,就像您所看到的那样。反射类型并不是 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 的机器上安全运行。

关于c# - 使用 .NET 4.5 构建的应用程序可以在 .NET 4.0 上运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16089802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com