构建错误“您是否缺少using指令或程序集引用” - 目标框架版本4

时间:2013-08-21 21:35:46

标签: .net .net-4.0 .net-4.5 paymill

我有一个使用图书馆的项目(来自nuget)
我项目的目标框架目前是4.0

我正在使用库中的对象和方法,我得到了智能感知......

但是,当我构建时,编译失败并带有

  

找不到类型或命名空间。您是否缺少using指令或程序集引用?

如果我将项目的目标框架更改为4.5,则会编译。

有没有办法解决这个问题?

修改

作为一个具体示例,以下是在一个特定情况下重现此问题的步骤。

  • 文件 - >新项目
  • 新控制台应用程序
  • 将目标框架设置为4.0

  • Nuget install paymill wrapper

使用Paymill包装器中的一种类型。例如:

using PaymillWrapper.Models;
using PaymillWrapper.Service;  

public class MyClass
{
    private readonly PaymentService _paymentService;
}
VS不抱怨。
编译

收到错误:

  

找不到类型或命名空间名称'ClientService'(您是否缺少using指令或程序集引用?)

2 个答案:

答案 0 :(得分:4)

答案在于构建输出:

  

2> C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(1605,5):警告MSB3274:主要参考“PaymillWrapper”无法解析,因为它是针对“.NETFramework,Version = v4.5”框架。这是比当前目标框架“.NETFramework,Version = v4.0”更高的版本。

     

2> C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(1605,5):警告MSB3268:无法解析主要参考“PaymillWrapper”,因为它具有间接依赖性在框架程序集“System.Net.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”中无法在当前目标框架中解析。 ” .NETFramework,版本= V4.0" 。要解决此问题,请删除引用“PaymillWrapper”或将应用程序重新定位到包含“System.Net.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”的框架版本。

换句话说,NuGet包使用对.NET 4.5的引用,因此您只能在.NET 4.5+项目中使用它。

您可能想要询问Paymill Wrapper的作者是否可以发布针对.NET 4的版本。

请注意NuGet package page甚至声明:

  

依赖
   - .NETFramework 4.5

答案 1 :(得分:0)

根据Jon Skeet的回答,问题实际上是问题库。

它是针对.net 4.5

构建的

我提交了pull request来解决此问题。