2015-06-14 88 views
4

我有一個在4.0上運行良好的項目,但是爲了利用新的ZipFile類我決定定位到4.5。我的絕大多數用戶都安裝了4.5+,但不是不可能只有4.0的用戶可能會來嘗試使用我的軟件。功能特定的.NET 4.5應用程序與.NET 4.0系統的兼容性

因爲它在4.0上運行得非常好,除了ZipFile類,我可以定位4.5,如果檢測到4.0,它只是禁用這個特定的代碼路徑,並繼續在所有其他方面正常運行?

但是,我認爲我無法輕鬆地完成向後兼容模式(完全可以),這是因爲不得不引用4.5程序集來首先使用ZipFile。

在附註中,我已經實現了對安裝的框架版本的檢測。如果檢測到< 4.5,我可以很容易地禁用這部分代碼。

回答

2

最簡單的方法是動態加載所需的代碼。

如果檢測到.NET 4.5,則可以使用反射來查找所需的程序集,類和成員。您可以將結果緩存在代表中,以避免每次都反映出來。

您也可以使用插件系統,其中插件增加了zip文件支持目標.NET 4.5,但您的主要應用程序僅以.NET 4.0爲目標。然後,您的主應用程序將確定它是否可以加載插件。

但是,您建議的目標是針對.NET 4.5並簡單地避免.NET 4.0功能,這是我非常強烈的勸阻。如果.NET 4.5是針對性的,您不知道哪些.NET 4.5功能將隱式使用。這打破了許多NuGet包,當你需要4.0版本時,它將錯誤地安裝.NET 4.5版本。這打破了async。這可能會打破更多。

+0

我不敢相信我沒有想到這一點,簡單地將ZipFile部分插入插件是非常棒的。感謝您的幫助。 – Sean

0

構建兩個版本的.exe(分別爲目標4.0和4.5)。 在安裝過程中,檢測.Net版本&提取與.net版本匹配的.exe文件。

相關問題