如何将.Net3.5 dll添加到.Net2.0项目中?

gre*_*man 6 .net c# dll reference

我有一个基于.net 3.5的dll - 它在内部使用例如Linq,但是暴露的API很简单,没有花哨的东西.由于C#泛型在编译时被解析,我认为对于调用方而言,所有重要的是API(所有公共部分).

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

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

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

use*_*019 9

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

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

C DLL在编译为本机代码时工作,不需要.Net框架.(或至少不高于2.0的版本)


Cra*_*aig 6

我已经在ASP.NET 2.0应用程序(使用VS2005)中使用System.Core和新的System.Web.Extensions(例如)一段时间,但没有任何问题.类似于Scott Hanselman在这里发表的博客.所以是的,这是可能的.

.NET 3.5仍然在与.NET 2.0相同的CLR上运行.所以在运行时它们都是一样的.(假设您已经跟踪了所有依赖项并将这些3.5 DLL复制到您的bin文件夹中.)

唯一真正的限制是您可以在开发时使用的C#语言功能.例如'var',扩展方法或LINQ查询语法.