无法安装本地NuGet包

3

细节

  • 使用Visual Studio 2017
  • 使用NuGet Package Explorer创建NuGet包
  • 将.nupkg文件放置在本地磁盘上的文件夹中
  • 在Visual Studio中添加文件夹到Package Sources中
  • 我尝试使用Visual Studio GUI (Tools > NuGet Package Manager > Manage NuGet Packages for Solution...)安装该包。

问题

我的包在GUI列表中显示,但当我点击安装时,出现错误消息说找不到我放置.nupkg文件的文件夹中的包:

Package 'TDDeviceIntegration 1.0.0' is not found in the following primary source(s): 'C:\Users\j.smith\Documents\Visual Studio 2017\LocalNugetRepository\'. Please verify all your online package sources are available (OR) package id, version are specified correctly.   

我尝试过的

  • 将我构建的NuGet包放在几个不同的本地文件夹位置,并将它们添加到包源中,但结果都一样(它找不到我刚放进去的包)。
  • 我已经多次重启了Visual Studio。
  • 我已经重启了电脑。
  • 我已经清除了Visual Studio中的NuGet缓存。

问题

我该如何诊断并解决这个问题?我只想确保这个NuGet包在本地可以正常工作,然后再交给团队其他成员。

谢谢!


1
如果将其重命名为TDDeviceIntegration.1.0.0.nupkg(包名称和版本之间使用点号而不是空格),它是否有效? - orhtej2
1
叮叮叮@orhtej2!更改.nupkg文件名称中的空格使安装似乎成功了!非常感谢! - Jake Smith
1
你想写一个我可以接受的答案吗? - Jake Smith
1
@orhtej2,请问你能否将你的评论转换为答案,这对于阅读此帖并寻找答案的其他社区成员会很有益。谢谢。 - Leo Liu
3
目前我能找到的最接近的文档是 https://learn.microsoft.com/en-us/nuget/create-packages/creating-a-package#choosing-a-unique-package-identifier-and-setting-the-version-number,它说:“类似命名空间的名称:遵循类似于 .NET 中命名空间的模式,使用点符号而不是连字符。” - Leo Liu
显示剩余5条评论
2个回答

4
我该如何诊断这个问题?我该如何修复它?在将NuGet包交给团队之前,我只想确保它能够在本地工作。正如@orhtej2的评论所说,您应该将其重命名为TDDeviceIntegration.1.0.0.nupkg(在软件包名称和版本之间使用点而不是空格)。此外,有关为什么点实际上是唯一允许的软件包名称 - 版本分隔符的一些信息。那是因为nuget包的命名空间遵循类似于.NET中的命名空间的模式,使用点符号而不是连字符。您可以从以下文档获取源代码:选择唯一的软件包标识符并设置版本号

enter image description here

希望这可以帮到您。

很遗憾,NuGet Package Explorer 项目创建的文件名中有空格... :( - Jake Smith
谢谢回答! - Jake Smith
我遇到了类似的问题,但不是空格而是破折号,所以我的包名为mypackage-1.0.0.0.nupkg。当从远程NuGet存储库拉取时,这个名称可以正常工作,但是当尝试下载并在本地安装时,只有将破折号更改为点才能正常工作,因此mypackage.1.0.0.0.nupkg。 - ZachSand

2
根据NuGet GitHub存储库的此链接,当您的软件包版本未经“标准化”(即由4个数字组成)时,可能会遇到此错误。 您的版本号只有3个数字,因此...(最后一位可能必须为0)。

1
有趣。我也试过了(应该在我的问题中提到,现在我会提到),但是NuGet包资源管理器一直将其更改回1.0.0。我将手动进行更改,看看是否有效。 - Jake Smith
看起来你不是唯一一个遇到 "missing digit" 问题并不得不手动解决的人。天哪! - Francesco B.
这真是太糟糕了。而且,我不确定所有需要手动完成的事情。我将文件更改为zip文件夹,提取它,更改.nuspec文件中的版本号,更改文件夹名称中的版本号,重新压缩文件夹,将扩展名改回nupkg,现在当我在Visual Studio中打开“解决方案的管理包”时,它只显示“发生错误”。 - Jake Smith
1
将版本号更改为1.0.0.1在使用NuGet包浏览器时肯定是持久的,当我重新启动Visual Studio并从同一本地存储库中删除其他NuGet包时,它出现在“解决方案GUI的管理包”中,但是当我单击安装时,仍然会收到相同的错误(无法在以下主要来源中找到):( - Jake Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接