簡體   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