[英]Custom Nuget package shows missing dependency error
我在一个解决方案(.NET Core)中有两个 class 库。 其中一个( cl1
)是一个主库,它依赖于另一个库( cl2
)。 我已经为项目文件夹中的cl1
项目(与.csproj
文件的位置相同)添加了一个仅包含所需元数据的.nuspec
文件(无依赖项,无文件),并且我已将GeneratePackageOnBuild
属性设置为true
。 每当我构建 class 库 ( cl1
) 时,都会在调试/发布文件夹中自动创建.nupkg
。
当我检查生成的.nupkg
文件时,我看到了两件奇怪的事情:
.nuspec
文件与我在项目文件夹中添加的不同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>
- 生成的.nuspec 文件与我在项目文件夹中添加的不同
如前所述,您的 NuSpec 文件可能不包括在内。 但是,即使存在,也可能存在差异,因为某些信息,例如源文件位置是不必要的,而目标位置在大多数情况下由内部 package 文件结构本身给出,因此它不存在,因为它是多余的。
- 在新生成的.nuspec 文件中提到了 cl2 作为依赖项,但 cl2 的 dll 不包含在 .nupkg 的 lib 文件夹中。 因此,每当我在其他解决方案中使用此 nupkg 时,我都会收到错误消息“源中不存在具有此 id 的包”对于 cl2。
依赖项适用于包。 因此,当 NuGet 恢复 package 时,它会搜索此 package 依赖的其他包,此处为cl2
,但没有,因此出现错误。 打包项目时,package 中不包含引用的项目。 这是一个悬而未决的问题,您可以尝试一些解决方法。
最可靠但不方便的解决方案是完全避免该问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.