Пакет Nuget неправильно переносит версии зависимостей

У меня есть пакеты Nuget, созданные из двух проектов: foo.csproj и bar.csproj. При использовании nuget update я хотел бы, чтобы bar обновил foo до последняя версия, соответствующая версии 3.0.*, и отклонить любую версию 3.1.*:

bar packages.config

<packages>
  <package id="Newtonsoft.Json" version="12.0.1" targetFramework="net461" />
  <package id="foo" version="3.0.4" targetFramework="net472" allowedVersions="3.0" />
</packages>

bar.nuspec

<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
  <metadata>
    <id>var</id>
    <version>3.0.4</version>
    <!-- omitted -->
    <!-- no dependency node in this .nuspec file - good, I think -->
  </metadata>
</package>

и в моем канале Nuget у меня есть:

  • foo.3.0.0.nupkg
  • foo.3.0.1.nupkg
  • foo.3.0.2.nupkg
  • foo.3.0.3.nupkg
  • foo.3.0.4.nupkg

Если я вызову nuget update, он правильно обновит файл packages.config — ура!

Однако когда я вызываю nuget pack bar.csproj, он создает файл .nupkg, который включает следующий файл bar.nuspec:

<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
  <metadata>
    <id>var</id>
    <version>3.0.4</version>
    <!-- omitted -->
    <dependencies>
      <dependency id="Newtonsoft.Json" version="12.0.1" />
      <dependency id="foo" version="3.0.0" />
    </dependencies>
  </metadata>
</package>

Я ожидал, что nuget pack будет соблюдать атрибут allowedVersions packages.config при создании узла dependency внутри файла .nupkg.

Как заставить nuget update и nuget pack работать вместе, чтобы поддерживать bar в актуальном состоянии с последней версией 3.0.* foo (в данном примере 3.0.4)?


person Eric Patrick    schedule 22.03.2019    source источник


Ответы (1)


Я ожидаю, что это будет работать так, как вы хотите, если вы удалите атрибут allowedVersions из вашего файла packages.config.

person zivkan    schedule 23.03.2019
comment
Согласен, что это устранит проблему 3.0.0, но я полагаю, что тогда я потеряю возможность nuget update обновиться до последней версии 3.0.*, но отклоню 3.1.*. (Я обновлю свой вопрос, чтобы прояснить эту цель.) - person Eric Patrick; 23.03.2019