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

时间:2019-09-19 13:58:28

标签: visual-studio .net-core nuget nuget-package

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

2 个答案:

答案 0 :(得分:0)

使用dotnet cli:

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

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

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

将文件夹设置为本地供稿。然后将您的xx.nupkg文件放入其中,您的问题将消失。您也可以在VS中通过UI设置供稿,请参见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

enter image description here

将您的xxx.nupkg文件复制到该文件夹​​中,然后在VS中右键单击project => Manage nugetpackages =>选择正确的包源,即可轻松使用它:

enter image description here

该文件夹也将为您提供本地供稿。

此外:

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

更新1:(有关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 core或.net标准,并且我已经对其进行了检查)

任何更新随时让我知道:)

答案 1 :(得分:0)

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

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

现在添加以下软件包(请参见屏幕截图),然后单击“确定”。

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

enter image description here