将 .NET 3.5 库与应用程序捆绑在一起,因此它可以在仅安装 .NET 2.0 的机器上运行?
Posted
技术标签:
【中文标题】将 .NET 3.5 库与应用程序捆绑在一起,因此它可以在仅安装 .NET 2.0 的机器上运行?【英文标题】:Bundle .NET 3.5 libs with app, so it runs on machines with only .NET 2.0 installed? 【发布时间】:2011-08-23 10:04:44 【问题描述】:我想在只安装 .NET Framework 2.0 的机器上使用 LINQ。
我已经阅读了有关 LINQBridge 的信息。但是我不能简单地将“copy local”设置为System.Core.dll
和System.Xml.Linq.dll
等引用的程序集以获得我需要的功能吗?
有什么缺点吗?这甚至允许吗?
【问题讨论】:
【参考方案1】:.Net 3.5 实际上只是带有一些额外 dll 的 .Net 2.0。没有 3.5 运行时。如果包含所需的 dll,应用程序将毫无问题地运行。
来自以下关于 linq 桥评论的文章:http://www.albahari.com/nutshell/linqbridge.aspx
首先,了解这一点很重要 C# 3.0 和 Framework 3.5 是 设计为与 CLR 2.0 一起使用——同样 Framework 2.0 使用的 CLR 版本。 这意味着 C# 3.0 编译器 发出运行在同一平台上的 IL 代码 虚拟机和以前一样。
这使得 Framework 3.5 具有附加性——只是 框架 3.0 是 添加剂——包括额外的 增强现有的组件 2.0 框架和 CLR。所以没有什么可以阻止我们写我们的 自己的程序集完成以下工作 框架 3.5(至少,关键 本地 LINQ 查询所需的位)。
然后编译器查找Where, OrderBy 和 Select 方法。这 关键是它可以找到 适当命名的方法 正确的签名(通常 扩展方法)。但它没有 不管方法是什么组装 从。 LINQBridge 只是提供 这些方法的另一个来源——即 在功能上与那些相同 在框架 3.5 中实施 程序集。
【讨论】:
linq bridge 提供了 2.0 框架中的方法。我会附上我的答案来展示。 你的意思是 3.5。框架,否则你的评论没有意义。重新发明这些扩展方法有什么意义?无论如何,我必须重新分发 System.Core.dll 或 LINQBridge.dll.. 因为这样您就不必将所有 dll 添加到安装中,只需添加一个即可。它将充当框架和您的代码之间的垫片,因此您不会遇到您希望在机器上安装 dll 而它没有安装的情况。如果您将所有 dll 包含到您知道需要的安装项目中,那么使用它就没有意义了。它只是为您省去了麻烦。以上是关于将 .NET 3.5 库与应用程序捆绑在一起,因此它可以在仅安装 .NET 2.0 的机器上运行?的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 10 上运行 dot net 3.5 应用程序
如何将针对 Entity Framework .Net 4.6.1 的库与 .Net Core 应用程序一起使用
与 .NET 2.0/3.5 一起使用的最佳免费 ORM 工具 [关闭]
当我将 .NET Standard 2.0 DLL 库与 .NET Framework 控制台应用程序一起使用时,如何设置依赖项?