Восстановление Nuget на TeamCity без учета версии? - PullRequest
0 голосов
/ 25 сентября 2019

Мой проект имеет

<ItemGroup>
  <PackageReference Include="System.ValueTuple" Version="4.5.0" />
  <PackageReference Include="FSharp.Core" Version="4.5.4" />
</ItemGroup>

Но когда я запускаю восстановление nuget (в TeamCity или из командной строки на сервере TeamCity), он восстанавливает последнюю версию FSharp.Core (в настоящее время 4.7).) вместо требуемой версии.

C:\Users\Benjol>C:\TeamCity\buildAgent\tools\NuGet.CommandLine.4.3.0\tools\NuGet.exe restore C:\TeamCity\buildAgent\work\8e6167a865903fc4\Components\Externals\Company.LabVIEW\Company.LabVIEW\Company.LabVIEW.fsproj
MSBuild auto-detection: using msbuild version '16.3.0.46305' from 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\bin'.
Restoring packages for C:\TeamCity\buildAgent\work\8e6167a865903fc4\Components\Externals\Company.LabVIEW\Company.LabVIEW\Company.LabVIEW.fsproj...
  GET https://api.nuget.org/v3-flatcontainer/fsharp.core/index.json
  OK https://api.nuget.org/v3-flatcontainer/fsharp.core/index.json 458ms
  GET https://api.nuget.org/v3-flatcontainer/fsharp.core/4.7.0/fsharp.core.4.7.0.nupkg
  OK https://api.nuget.org/v3-flatcontainer/fsharp.core/4.7.0/fsharp.core.4.7.0.nupkg 16ms
Installing FSharp.Core 4.7.0.
Committing restore...
Generating MSBuild file C:\TeamCity\buildAgent\work\8e6167a865903fc4\Components\Externals\Company.LabVIEW\Company.LabVIEW\obj\Company.LabVIEW.fsproj.nuget.g.props.

Writing lock file to disk. Path: C:\TeamCity\buildAgent\work\8e6167a865903fc4\Components\Externals\Company.LabVIEW\Company.LabVIEW\obj\project.assets.json
Restore completed in 2.13 sec for C:\TeamCity\buildAgent\work\8e6167a865903fc4\Components\Externals\Company.LabVIEW\Company.LabVIEW\Company.LabVIEW.fsproj.

NuGet Config files used:
    C:\Users\Benjol\AppData\Roaming\NuGet\NuGet.Config

Feeds used:
    https://api.nuget.org/v3/index.json

Installed:
    1 package(s) to C:\TeamCity\buildAgent\work\8e6167a865903fc4\Components\Externals\Company.LabVIEW\Company.LabVIEW\Company.LabVIEW.fsproj

Есть советы?Или способы, которыми я могу исследовать дальше?

Ответы [ 3 ]

1 голос
/ 25 сентября 2019

Включили ли вы опцию «Обновить версию пакетов» на этапе сборки «NuGet Installer»?

enter image description here

1 голос
/ 25 сентября 2019

Вы можете взглянуть на файл блокировки nuget

0 голосов
/ 25 сентября 2019

Это странно.Следуя предложению @ Богдана , я изучил возможность использования файла блокировки, но, по-видимому, в nuget.exe нет параметра командной строки, чтобы его можно было использовать, вам нужно обратиться к dotnet.exe илииспользуйте цель восстановления msbuild.

Но немного поэкспериментировав, кажется, что если я использую msbuild, она все равно восстанавливает нужную / правильную версию, поэтому мне все равно не нужен файл блокировки.

Но , восстановление msbuild обрабатывает только PackageReference, и у меня есть несколько старых проектов, которые используют package.config.Таким образом, это означает, что я должен сначала выполнить восстановление nuget (которое восстанавливает packages.config, но получает неправильную версию FSharp), а затем следовать за ним с помощью восстановления msbuild (которое исправляет правильную версию FSharp - я думаю!).

Я рад, что мне платят за работу с такими вещами, но это не увеличивает мою производительность!

При этом использовались инструменты msbuild 2017, только что обновленные до 2019, и теперь msbuildделать то же самое, что и nuget: (

...