繁体   English   中英

自定义 Nuget package 显示缺少依赖项错误

[英]Custom Nuget package shows missing dependency error

我在一个解决方案(.NET Core)中有两个 class 库。 其中一个( cl1 )是一个主库,它依赖于另一个库( cl2 )。 我已经为项目文件夹中的cl1项目(与.csproj文件的位置相同)添加了一个仅包含所需元数据的.nuspec文件(无依赖项,无文件),并且我已将GeneratePackageOnBuild属性设置为true 每当我构建 class 库 ( cl1 ) 时,都会在调试/发布文件夹中自动创建.nupkg

当我检查生成的.nupkg文件时,我看到了两件奇怪的事情:

  1. 生成的.nuspec文件与我在项目文件夹中添加的不同
  2. cl2在新生成的.nuspec文件中被提及为依赖项,但 .nupkg 的lib文件夹中不包含cl2.nupkg 因此,每当我在另一个解决方案中使用此 package 时,我都会收到错误No packages exist with this id in source(s) for the cl2

我已经在互联网上冲浪,但无法为上述错误找到合适的解决方案。

我在项目文件夹中添加了一个.nuspec文件[...](与.csproj文件相同的位置)

您必须使用NuspecFile标记在.csproj中指定您自己的 NuSpec 文件的路径,否则它将被忽略,并且将使用.csproj文件中的元数据创建 package,请参阅参考资料 您需要使用文件的相对路径或绝对路径,例如:

<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
     <NuspecFile>cl1.nuspec</NuspecFile>
   </PropertyGroup>
</Project>
  1. 生成的.nuspec 文件与我在项目文件夹中添加的不同

如前所述,您的 NuSpec 文件可能不包括在内。 但是,即使存在,也可能存在差异,因为某些信息,例如源文件位置是不必要的,而目标位置在大多数情况下由内部 package 文件结构本身给出,因此它不存在,因为它是多余的。

  1. 在新生成的.nuspec 文件中提到了 cl2 作为依赖项,但 cl2 的 dll 不包含在 .nupkg 的 lib 文件夹中。 因此,每当我在其他解决方案中使用此 nupkg 时,我都会收到错误消息“源中不存在具有此 id 的包”对于 cl2。

依赖项适用于 因此,当 NuGet 恢复 package 时,它会搜索此 package 依赖的其他包,此处为cl2 ,但没有,因此出现错误。 打包项目时,package 中包含引用的项目。 这是一个悬而未决的问题,您可以尝试一些解决方法

最可靠但不方便的解决方案是完全避免该问题。

  • 仅使用单个项目,所有内容都将包含在 package 中
  • 自己打包每个工程,使用生成的package代替引用的工程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM