我如何在使用.NET framework 3.5构建的C#项目中使用.NET 4.0代码?

时间:2013-04-16 13:29:59

标签: c# .net .net-4.0 .net-3.5

我想调用使用.NET 4.0从C#项目构建的dll,它应该使用.NET 3.5构建。我的意思是.net 4.0依赖代码应该只在我的机器安装了.net 4.0时执行,否则只是跳过那部分。 这是可能的(任何解决方法)?如果是,那么如何实现呢?

1 个答案:

答案 0 :(得分:1)

不是将.NET 4.0 DLL添加到引用中,而是将其包装到服务中并调用服务来访问您的方法。该服务可以是HTTP / HTTPS服务(例如MVC4 RESTful WebAPI,WCF),也可以是监视drop文件夹或SQL表的窗口服务。

[编辑]

假设您有一个使用.NET 3.5构建的Windows服务(项目A) 项目A需要调用一个驻留在使用.NET 4.0构建的类库(项目B)中的方法。

使用此设置,您无法从项目A(ProjectA --- x - > ProjectB)添加对项目B的引用

替代方案是:

  1. 将项目A升级到.NET 4.0,然后添加对项目B的引用并调用您的方法
  2. 找到项目A和项目B可以在不添加直接引用的情况下进行通信的方式。当然它带来了成本,但如果你别无选择,这是最好的方式。您可以通过两种方式执行此操作:

    2.1 HTTP API:我会使用MVC4 Web API http://www.codeproject.com/Articles/344078/ASP-NET-WebAPI-Getting-Started-with-MVC4-and-WebAP

    2.2数据库队列:项目A将序列化并将请求插入共享数据库(例如SQL)表,而项目B继续监视该表中的新行。对于每个新行,它会选择它们运行所需的功能并将结果存储在另一个表中。

    2.3删除文件夹:项目A将序列化并将其请求和参数写入文件并将其存储在共享文件夹中。项目B一直在寻找该共享文件夹中的新文件,一看到它就读取,删除它,并将结果存储在共享文件夹中。

  3. 免责声明:我提出的解决方案非常适合于小型项目,其中一个相当大且重要的逻辑存在于.NET 4.0项目中,无法移植到.NET 3.5中。如果你只需要运行几行4.0代码并且你不想打扰大的复杂性,那么你可能需要重新思考你想要在.NET 4项目中实现的目标。您可以查看How to reference .NET 4.0 assembly within .NET 3.5 projects