安装包成功,Update-Package总是失败。为什么?

时间:2015-11-11 12:20:03

标签: nuget nuget-package

我是一个项目的开发人员,即使我们不使用.Net,我们也会将nuget用作包装技术,因为......好吧......因为它有一个问题。我们的许多盒子(即包装为单个工件,版本控制,内部nuget服务器用于分发)。在实践中,我们大量使用<files> element in our .nuspec files来打包可重用的代码工件,然后在需要它们的任何地方使用。

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

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

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

update-package fails

install-package工作正常:

install-package succeeds

这是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>

我们不知道为什么会这样。我们有一个理论认为,我们在解决方案层面而不是项目层面使用nuget这一事实可能是一个问题,但是说,我不认为我们正在做任何不能做的事情。 ; t为...而设计。此外,我们还有许多其他软件包(&gt; 10),所有这些软件包都可以更新。

这有点推测,但有人提出任何建议,说明为什么这不起作用或我们可以做些什么来进一步调查。我们有点死路一条。

2 个答案:

答案 0 :(得分:1)

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

取自https://docs.nuget.org/consume/nuget-faq

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

  

解决方案级别的软件包只能在解决方案中安装一次,以便解决方案中的所有项目都可用。必须在要使用它的每个项目中单独安装项目级包。对于解决方案级别的包,NuGet不会更改项目中的任何内容,而在项目级别的包中则会更改。通常,解决方案级别的软件包会安装可在Package Manager控制台窗口中调用的新命令。

答案 1 :(得分:0)

感谢@ lloyd-holman,我想到了这一点。我的.nupkg有一个&#34; lib&#34;文件夹让Nuget Package Manager认为它是一个项目级的nuget包。因此,它无法将其更新为解决方案级别的nuget包。