我有一个在4.0上运行良好的项目,但为了利用新的ZipFile类,我决定以4.5为目标.我的绝大多数用户都安装了4.5,但只有4.0的用户可能会尝试使用我的软件.
由于它在4.0上运行完全正常,但ZipFile类除外,我可以定位4.5,如果检测到4.0,它只是禁用这个特定的代码路径并继续在所有其他方面正常运行?
然而,我假设我不能轻易地做这种向后兼容模式(根本没有?),因为必须首先引用4.5组件来使用ZipFile.
另外,我已经实现了对安装的框架版本的检测.如果检测到< 4.5,我可以很容易地禁用这部分代码.
解决方法:
最简单的方法是动态加载所需的代码.
如果检测到.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版本.这打破了异步.这可能会打破更多.