.net 生成错误“您是否缺少using指令或程序集引用”-目标框架版本4
我有一个项目使用nuget的库 我的项目的目标框架目前是4.0 我正在使用库中的对象和方法,我得到了intellisense等 然而,当我构建时,编译失败 找不到类型或命名空间。是否缺少using指令或程序集引用 如果我将项目的目标框架更改为4.5,它将编译 有办法解决这个问题吗 编辑 作为一个具体的例子,下面是在一个特定情况下重现此问题的步骤 文件->新项目 新的控制台应用程序 将目标框架设置为4.0 Nuget安装 使用Paymill包装中的一种类型。例如:.net 生成错误“您是否缺少using指令或程序集引用”-目标框架版本4,.net,.net-4.0,.net-4.5,paymill,.net,.net 4.0,.net 4.5,Paymill,我有一个项目使用nuget的库 我的项目的目标框架目前是4.0 我正在使用库中的对象和方法,我得到了intellisense等 然而,当我构建时,编译失败 找不到类型或命名空间。是否缺少using指令或程序集引用 如果我将项目的目标框架更改为4.5,它将编译 有办法解决这个问题吗 编辑 作为一个具体的例子,下面是在一个特定情况下重现此问题的步骤 文件->新项目 新的控制台应用程序 将目标框架设置为4.0 Nuget安装 使用Paymill包装中的一种类型。例如: using PaymillWra
using PaymillWrapper.Models;
using PaymillWrapper.Service;
public class MyClass
{
private readonly PaymentService _paymentService;
}
VS不会抱怨。
编撰
接收错误:
找不到类型或命名空间名称“ClientService”是否缺少using指令或程序集引用
答案在于构建输出: 2> C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets1605,5:警告MSB3274:无法解析主引用PaymillWrapper,因为它是根据.NETFramework,版本=v4.5 Framework生成的。这是一个高于当前目标framework的版本。NETFramework,版本=v4.0 2> C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets1605,5:警告MSB3268:无法解析主引用PaymillWrapper,因为它间接依赖于Framework程序集System.NET.Http,版本=4.0.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a,无法在当前目标框架中解析。NETFramework,版本=v4.0。若要解决此问题,请删除参考PaymillWrapper或将应用程序重新定位到包含System.Net.Http、version=4.0.0.0、Culture=neutral、PublicKeyToken=b03f5f7f11d50a3a的框架版本 换句话说,NuGet包使用了对.NET4.5的引用,因此您只能在.NET4.5+项目上使用它 您可能想询问Paymill Wrapper的作者,看看他们是否可以发布一个以.NET4为目标的版本 请注意,偶数表示: 依赖关系 -.NETFramework 4.5
根据Jon Skeet的回答,问题实际上是图书馆的问题 它是根据.NET4.5构建的
我提交了一个解决方案。我怀疑错误消息显示了找不到的实际类型或命名空间。这些信息对这个问题至关重要,确实如此。但是类型在我引用的库中。更改目标框架可以解决此问题。。。但对我来说,这似乎不是一个解决方案?它是哪个库?可能有不同的版本用于不同的目标?你为什么要持有我们提供的相关信息?这应该很容易复制,但不是在你隐藏信息的时候。因为我似乎吸引了下层选民的愤怒——你的意思是因为我的问题没有足够的信息。所讨论的目标库是相关的,找不到的类型也是相关的。既然你已经发布了更多的信息,我可以尝试重现这个问题。我不明白你以前为什么这么不愿意这样做,或者你为什么认为人们对你模糊的问题投了反对票是不合理的。@alexjamesbrown:这是针对需要.NET 4.5的图书馆的,但我们不知道所讨论的图书馆是否需要.NET 4.5。这可能是一个完全不同的、模糊的问题。由于没有包括任何信息,你使人们更难帮助你。我也这么想。只是想澄清一下,没有特别清楚地说明问题well@alexjamesbrown:那么您是否已经注意到生成错误?如果是,你为什么不在问题中提及?为什么你认为导致问题的NuGet软件包不相关?