c# - 如何将.Net3.5 dll 添加到.Net2.0 工程中?

标签 c# .net dll reference

我有一个基于 .net 3.5 的 dll——它在内部使用例如 Linq,但公开的 API 很简单,没有花哨的东西。由于 C# 泛型是在编译时解析的,所以我假设对于调用方而言,它只计算 API(所有公共(public)部分)。

但是,当我尝试使用来自 net2.0 项目的此 dll 时,我得到信息,该 dll 无法被引用,因为该 dll 或其依赖项之一需要更高版本的 .net 框架。

我可以在目标计算机上安装我想要的任何 .net 版本(当安装了整个应用程序时),但我无法更改项目本身的 .net 版本。

那么:如何解决这个问题?当我在这个项目中添加一个 C dll 时,我没有遇到这样的问题,那么 C# dll 是否是自包含的?

最佳答案

C# dll 需要有 .Net 运行时才能运行,因为它们不会被编译成机器代码。在这种情况下,dll 表示它需要 Net 3.5,因此您的所有项目都必须使用 3.5 或更高版本。

要使您的项目保持 Net 2.0,您需要构建另一个可执行文件以包含 3.5 DLL 并在不同的进程之间进行通信。

C DLL 可以正常工作,因为它被编译为 native 代码并且不需要 .Net 框架。 (或者至少不是高于 2.0 的版本)

关于c# - 如何将.Net3.5 dll 添加到.Net2.0 工程中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2772291/

相关文章:

c# - 带有异步 Task.Run 方法的死锁,带有来自 Synchronus 方法的 Wait 和超时

.net - 独特的 CodeCoverage 突出显示

c++ - 如何使用宏动态加载 dll

c# - c++ dll结构到c#

c# - 为什么我的 DropDownListFor 不会在我发布时填充我的 id 属性?

c# - 寻求通用的基于上下文的存储

c# - 如何使用带有多个星号的行过滤器过滤 c# 数据表?

javascript - 无法检索引用的 URL

c# - 自定义迭代器的实现不会更改其参数之一

c# - lambda 事件订阅会造成内存泄漏吗?