35

我创建了这个包,我在项目中需要它但无法安装它,出现此错误:

无法安装软件包“Mshwf.NiceLinq 1.0.9”。您正在尝试将此包安装到以“.NETFramework,Version=v4.5”为目标的项目中,但该包不包含任何与该框架兼容的程序集引用或内容文件。有关更多信息,请联系包作者

我不知道为什么会发生这种情况,在另一个项目(控制台)中我将框架更改为 4.6 和其他版本,这不是问题,但这仅发生在这个项目(MVC 和 Web API)中:

这是 nuspec 文件:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>Mshwf.NiceLinq</id>
    <version>1.0.9</version>
    <title>Nice LINQ</title>
    <authors>MShawaf</authors>
    <owners>Mshawaf</owners>
    <projectUrl>https://github.com/mshwf/NiceLinq</projectUrl>
    <iconUrl>https://raw.githubusercontent.com/mshwf/NiceLinq/master/logo.png</iconUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>See it as: WHERE ID IN (1, 2, 3, 7, 9, 22, 30, 101)</description>
    <releaseNotes>Minor changes.</releaseNotes>
    <copyright>Copyright 2016</copyright>
    <tags>LINQ IEnumerable Where Contains Search Filter</tags>
  </metadata>
</package>
4

12 回答 12

29

您的包以 NETFramework,Version=v4.5.2 为目标。这意味着程序集文件夹是 lib\net452。您正在尝试将包安装到更高的框架(大于 4.5)项目。使用框架 4.5.2 创建一个项目,或将包的 lib 文件夹从 net452 重命名为您想要定位的版本,如 net45 或 net46。

您也可以从一个包中定位多个框架。

像这样编辑您的 csproj 文件:

<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>

参考这里:https ://docs.microsoft.com/en-us/nuget/create-packages/supporting-multiple-target-frameworks

有关目标框架名称的完整、最新列表,请参阅https://docs.microsoft.com/en-us/nuget/reference/target-frameworks#supported-frameworks

于 2017-02-04T11:14:20.503 回答
26

转到文件夹:

C:\Users\[username]\.nuget\packages\[package name]\1.0.0.4\lib

使用项目的 .net 版本重命名文件夹。

假设我使用 .net framework 4.6.1 我的文件夹名称应该是net461

于 2019-06-13T10:28:01.923 回答
4

您可以安装早期版本,例如:Install-Package AutoMapper -Version 7.0.1

于 2019-04-28T05:23:39.110 回答
2

就我而言,我试图将包安装到 WPF 应用程序(.Net Framework)中,而我的同事为 .Net Core 项目准备了包。

尝试创建一个 .Net Core 项目(或目标项目类型的类型)并以相同的方式安装包:

解决方案资源管理器>右键单击解决方案>管理解决方案的 Nuget 包>搜索所需的包>安装

在其他解决方案之前检查这一点可能会节省时间。

于 2019-09-06T08:39:21.167 回答
1

.NET Target Framework 版本很可能太旧。我有 VS 2017,我的新 .NET Framework 项目的默认目标框架是 4.0。我最初尝试安装 RestSharp 包,但它失败了,消息几乎与这篇文章“无法安装包 ...”中的消息相同。但是,当我去 Project | 属性 | 和应用程序我能够将目标框架更改为 .NET Framework 4.6.1,然后它安装得很好。

于 2021-03-14T02:22:53.800 回答
0

在我的情况下,我尝试安装 Itext7 包,我的项目 .NET 框架是 4.5 我通过使用以下步骤将我的项目 .NET 框架更改为 .NET 4.6.1,然后我成功安装了包:

1-右键单击项目并单击属性
2-在应用程序选项卡下将目标框架更改为包所需的框架

于 2022-02-08T22:56:35.280 回答
0

我有类似的问题,我通过删除 packages.config(如果你不想删除,你可以编辑文件)文件解决了这个问题,然后确保我使用的两个包都是使用与项目相同的 .net 版本构建的我正在使用它(对我来说,这个包是使用 4.6 构建的,而我的控制台项目针对的是早期版本的 .net)。

于 2019-09-26T22:57:43.637 回答
0

尝试在此处安装 .net SDK ,然后右键单击您的解决方案/项目并“恢复 nuget 包”

于 2020-07-22T06:33:32.600 回答
0

我在我们自己的私有 nuget 服务器上创建和托管的包遇到了这个问题,但即使在这里尝试了其他建议(例如确保包支持正确的 .net 框架版本),它仍然无法工作。

我让其他人尝试,他们设法毫无问题地添加它。今天,在 VS 的选项中弄乱了,我找到了一个解决方法:选项 -> NuGet 包管理器 -> 常规 -> 清除所有 NuGet 缓存

如何在 Visual Studio 中清除 nuget 缓存

希望这可以帮助像我一样困惑的人:D

于 2020-08-03T15:13:38.380 回答
0

更新 Application .NET 目标框架可以解决问题。就我而言,我正在安装 EmguCv 4.2 包。尝试使用 4.5.1 .NET 目标框架构建时出现同样的错误。将 .NET 目标框架更新到 4.6.2 后,我可以成功安装 EmguCv 4.2 Nuget 包。

于 2020-03-02T16:22:08.683 回答
0

我无法在 .NETFramwork 应用程序中安装 OpenTK 包,但我在 .NET Core 项目中取得了成功

于 2022-02-24T10:16:30.133 回答
0

就我而言,我试图将我们自己制作的包插入我们自己的 Nuget 提要中,因此我可以访问该项目。这就是我为解决问题所做的。在项目解决方案窗口中,单击 packages.config。在属性窗口中,将构建操作更改为“内容”。再次将其推送到我们的提要后,我能够将其安装到主项目中。

于 2018-01-10T22:39:52.583 回答