2

我的项目从 .NET Framework 的 4.0 版本降级到 2.0 版本。但它包含大量使用 LINQ To Objects 和 LINQ To XML 的代码(我使用了很多 XElement 对象)。当我将.NET Framework 3.5 中的System.Core.dllSystem.Xml.Linq.dll库包含到我的项目中时,这会添加必要的功能并解决问题。

但是有两个问题:

  1. 这种解决方案有什么缺点吗?
  2. 我可以使用 .NET Framework 3.5 中包含的两个库以商业方式分发我的程序吗?如果我违反任何使用和分发 .NET Framework 的许可怎么办?
4

1 回答 1

0

我认为使用System.Core可能意味着你遇到了一些麻烦(如果只是从技术的角度来看 - IANAL 所以不会评论任何类型的分发问题)....

作为一个例子(我没有具体的证据,只是提出假设)你有 System.Core 的 .NET 3.5 版本,并且有一个 .NET 2.0 程序集,它使用 System.Core 中的一个类,但它有一个不稳定,因为它不是.NET 2.0 附带的 System.Core 程序集,其行为方式可能不同......或者相反,3.5 System.Core 中的某些东西期望在 .NET 3.5 中修改的另一个程序集以某种方式或提供一定的功能,但 .NET 2.0 版本的程序集没有;这听起来像是您可能会花费大量时间调试/故障排除/诊断/头部撞击的那种情况。

话虽这么说,似乎人们已经在这里这里工作了一些以前的 SO 问题。这些链接中可能还有一些有用的评论可以帮助您。还有一些更多的链接,人们似乎受到同一事物的激励(在 .NET 2.0 上使用 LINQ)herehere。还有某种使用来自 Mono here的程序集的实现

如果您只是想将组件放入其中,那么其中之一就是您想要(仅我认为)投入大量时间进行测试,以减少您在出现不可预测的结果方面的风险足迹。

正如您所指出的,2.0 和 3.5 之间没有单独的运行时(与 2.0 -> 4.0 不同),因此使用这个事实,您可以在您的应用程序将部署到的每台目标机器上安装最新的 3.5(桌面用于一个 WinForms/WPF 应用程序或服务器上的基于 Web 的东西,我猜)并且在 Visual Studio 中开发时只3.5 作为您的 .NET 版本?我认为这会让事情变得更安全一些,因为你实际上将框架版本作为开发工作的一部分,而不是仅仅换入/换出一组程序集。

于 2013-03-22T08:00:23.360 回答