Nuget 安装程序包成功,更新程序包始终失败。为什么?

Nuget 安装程序包成功,更新程序包始终失败。为什么?,nuget,nuget-package,Nuget,Nuget Package,我是一个项目的首席开发人员,尽管我们不使用.Net,但我们使用nuget作为打包技术,因为…嗯…因为它为我们设置了很多框(即打包为单个工件、版本控制、内部nuget服务器以供分发)。在实践中,我们大量使用可重用代码来打包可重用代码工件,然后在需要的地方使用它们 在使用.nupkg包的每个代码库中,我们都有一个仅包含packages.config文件的Visual Studio解决方案(.sln文件),该解决方案不包含任何项目。 这是伟大的工作,除了一件事,我们有一个.nupkg(dh.PSP.

我是一个项目的首席开发人员,尽管我们不使用.Net,但我们使用nuget作为打包技术,因为…嗯…因为它为我们设置了很多框(即打包为单个工件、版本控制、内部nuget服务器以供分发)。在实践中,我们大量使用可重用代码来打包可重用代码工件,然后在需要的地方使用它们

在使用.nupkg包的每个代码库中,我们都有一个仅包含packages.config文件的Visual Studio解决方案(.sln文件),该解决方案不包含任何项目。

这是伟大的工作,除了一件事,我们有一个.nupkg(dh.PSP.SSE.Engine)拒绝更新。每次尝试更新包时,它都会失败,原因是:

Update-Package : 'dh.PSP.SSE.Engine' was not installed in any project. Update failed

安装包工作正常:

这里是dh.PSP.SSE.Engine.nuspec:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>dh.PSP.SSE.Engine</id>
    <version>1.0.0</version>
    <authors>dunnhumby</authors>
    <owners>dunnhumby</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <summary>Strategic Scoring Engine - Engine</summary>
    <description>Strategic Scoring Engine - Engine</description>
    <releaseNotes/>
    <copyright>Copyright 2014</copyright>
  </metadata>
  <files>
    <file src="fs\**" />
    <file src="Cronacle\**" target="Cronacle" exclude="Cronacle\Cronacle.car;Cronacle\com\**;Cronacle\META-INF\**" />
    <file src="VersionNumberStamp.txt" target="VersionNumberStamp_dh.PSP.SSE.Engine.txt" />
    <file src="packages\dh.PSP.SSE.Ape.*\*.jar" target="lib" />
    <file src="packages\dh.PSP.SSE.Chimp.*\programs\*.py" target="lib" />
  </files>
</package>

dh.PSP.SSE.Engine
1.0.0
邓亨比
邓亨比
假的
战略计分引擎-引擎
战略计分引擎-引擎
版权所有2014
我们不明白为什么会发生这种情况。我们有一个理论,我们在解决方案级别而不是项目级别使用nuget可能是一个问题,但也就是说,我不认为我们在做nuget不是为之设计的任何事情。此外,我们还有许多其他软件包(>10),所有这些软件包的更新都很好


这是一个推测,但有没有人有任何建议,为什么这不起作用,或者我们可以做些什么来进一步调查。我们处于一个死胡同。

Jamie,你能添加.nuspec文件的内容吗?它可能是NuGet解决方案和项目级包格式之间的微妙之处,可能最近有所改变

取自

使用包 项目级包和解决方案级包之间有什么区别

解决方案级别的软件包只需在解决方案中安装一次,即可用于解决方案中的所有项目。项目级软件包必须分别安装在要使用它的每个项目中。对于解决方案级包,NuGet不会更改项目中的任何内容,而在项目级包中它会更改。通常,解决方案级别的软件包安装新命令,这些命令可以从软件包管理器控制台窗口中调用


多亏了“劳埃德·霍尔曼”,我才明白这一点。My.nupkg有一个“lib”文件夹,所以Nuget包管理器认为它是一个项目级的Nuget包。因此,它无法将其更新为解决方案级别的nuget包。

很好,请致电劳埃德。完成。因此,nuspec(使用\lib文件夹)使您的NuGet包成为项目级包,而不是[解决方案级包](),鉴于解决方案中存在“零项目”,我将首先考虑解决这个问题,也许您曾经有过一个项目?