无法找到包。源中不存在具有此 ID 的包。 .NET核心

Unable to find package . No packages exist with this id in source. .NET core

我正在尝试将项目用作其他解决方案中的 nuget 包。 我想使用的项目在他所在的解决方案中有 2 个对其他项目的引用。 我在我想用作 nuget 包的项目路径中使用 cli 命令 dotnet pack 创建 .nupkg 文件。 当使用命令 dotnet add package 将 .nupkg 文件添加到其他解决方案时,我在 post 标题中收到带有 2 个引用项目名称的错误。

使用 dotnet cli:

正如@Lex Li建议的那样,要使用像dotnet add package xxx这样的命令来引用自己创建的本地包,您可以选择设置本地提要并推送在你这样做之前将它发布到提要。(你也可以选择将包发布到 nuget.org 和其他提要)

配置本地提要的简单方法:Nuget.config 文件控制使用 nuget 包的行为,您可以在以下位置找到适用于当前用户的 Nuget.config 文件:%appdata%\NuGet\NuGet.Config .您可以使用如下语句:

<add key="Local Packages" value="C:\path\..." />  

将文件夹设置为您的本地提要。然后将您的 xx.nupkg 文件放入其中,您的问题就会消失。也可以在VS中通过UI设置feed,看我下面在Install it by VS中的描述。 (除此之外,您还可以使用 Nuget Server。)


VS安装:

并且由于您正尝试在安装了 VS 的本地计算机上使用包,您还可以考虑使用 VS nuget 包管理器 UI,请参阅 this document

在 VS 中执行此操作的一个简单方法是转到 Tools=>nuget package manager=>package manager settings=>package source,单击绿色按钮定义新包源,例如 C:\xxx\MyLocalPackages:

将你的xxx.nupkg文件复制到文件夹中,然后在VS中右键单击项目=>管理nuget包=>选择正确的包源即可轻松使用它:

该文件夹也可用作您的本地供稿。

另外:

我正在使用 cli 命令 dotnet pack 创建 .nupkg 文件。您可以将 xx.nupkg 重命名为 xx.zip,并检查其 lib 文件夹的内容。请确保引用的两个项目的程序集位于那里。(我在解决您的原始问题后遇到了这个新问题)如果它们不在那里,您可能会遇到类似的问题,例如 this, and here's the workaround from 马丁.

Update1:(有关 Martin 解决方法的更多详细信息) 在 VS 中卸载项目以编辑 xx.csproj,将此脚本添加到其中:

<Project>

    ...

  <PropertyGroup>
    <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);IncludeP2PAssets</TargetsForTfmSpecificBuildOutput>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include = "..\ProjectName\ProjectName.csproj" PrivateAssets="All" />
  </ItemGroup>

  <Target Name = "IncludeP2PAssets" >
    <ItemGroup>
      < BuildOutputInPackage Include="$(OutputPath)\ProjectName.dll" />
    </ItemGroup>
  </Target>
</Project>

将 ProjectName 替换为您所依赖的项目的名称。然后在VS中构建它,你可以在bin\debug或bin\release中找到xx.nupkg。 (它应该适用于 .net 核心或 .net 标准,我已经检查过了)

如有任何更新,请随时告诉我:)

我的解决方案来自 Visual Studio 主菜单:

Tools=>Options=>Nuget Package Manager=>Click On Package Sources

现在添加以下包(见屏幕截图)并单击确定。

构建您的应用程序,它将没有错误。