我认为使用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)here和here。还有某种使用来自 Mono here的程序集的实现
如果您只是想将组件放入其中,那么其中之一就是您想要(仅我认为)投入大量时间进行测试,以减少您在出现不可预测的结果方面的风险足迹。
正如您所指出的,2.0 和 3.5 之间没有单独的运行时(与 2.0 -> 4.0 不同),因此使用这个事实,您可以在您的应用程序将部署到的每台目标机器上安装最新的 3.5(桌面用于一个 WinForms/WPF 应用程序或服务器上的基于 Web 的东西,我猜)并且在 Visual Studio 中开发时只将3.5 作为您的 .NET 版本?我认为这会让事情变得更安全一些,因为你实际上将框架版本作为开发工作的一部分,而不是仅仅换入/换出一组程序集。