Пакет Nuget неправильно переносит версии зависимостей - PullRequest
0 голосов
/ 22 марта 2019

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

бар 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 будет соблюдать атрибут packages.config allowedVersions при создании узла dependency внутри файла .nupkg.

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

1 Ответ

0 голосов
/ 23 марта 2019

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

...