我可以将System.Core.dll(.net 3.5)的引用添加到.net 2.0应用程序并使用它

我可以将System.Core.dll(.net 3.5)的引用添加到.net 2.0应用程序并使用它

我试图通过引用System.Core.dll来使用仅在.net 3.5中可用的TimeZoneInfo类

或者,他们是.net 2.0(或自定义类)中的TimeZoneInfo的替代品

不,你真的不应该 。 您必须在目标计算机上安装3.5,否则您将在正在运行的程序中遇到不可预测的行为。 包括System.Core.dll在内的3.5框架依赖于添加到CLR 2.0 SP1的几个错误修复/function(这是3.5框架的一部分)。 如果你针对未修补的CLR运行,你将基本上运行未经测试的代码,并可能遇到几个错误。

Scott Hanselman 撰写了一篇博文,描述了如何在2.0框架上运行早期版本的MVC。 他指出,只要您非常小心不要调用依赖于3.0+特定的CLRfunction的任何例程(例如,LINQtoSQL),System.Core上的依赖关系可能就可以了。

正确地在博客文章上贴上了免责声明它不受支持,它很可能不适合你,但他得到了它的工作,如果可以的话,那就为你而生。

我不确定你是否可以使用System.Core.dll执行此操作,但我们之前使用Linq2Sql dll执行此操作以获取.net 2.0应用程序。 .net 3.5使用相同版本的CLR和基于.net 2.0运行时构建的新程序集。 如果您可以获得所有依赖项,它可能会起作用。 正如我所说,这对我们使用Linq2Sql dll,但并不能保证适用于所有场景。 (例如,您可能无法在Windows 2000上运行WPF,但您可能能够使Linq对象工作)

.net 3.5在.net 2.0运行时运行。 所以你应该能够使用它…但引用一个dll会导致意外的行为,因为你不知道system.core.dll有所有的依赖….我建议不要那样做…

你可以这样做,目前为工作工具做同样的事情 – 也利用TimeZoneInfo的东西。 只要那些你所使用的就不应该遇到任何问题(至少我没有)。

但是,我不完全确定将System.Core与您的应用捆绑在一起的合法性。 据我所知,你是不允许的。

我最终使用Mono中的那个使用它的工具。