Невозможно автоматически обновить пакет NuGet до последней версии во время сборки

У нас есть два отдельных решения .NET:

Запуск сборки для первого решения дает наш конечный продукт: кучу DLL. Эти DLL доставляются нашим клиентам через пакет NuGet.Второе решение служит решением для тестирования продукта: к нему устанавливается пакет NuGet, он создается и выполняется - таким образом, он использует наш продукт точно так же, как и наши клиенты.

Проблема здесь заключается в том, что наш последний пакет NuGet должен автоматически устанавливаться в решение для тестирования продукта, предпочтительно во время сборки этого решения для тестирования продукта.

Основано на идеях изпохожий вопросЯ дошел до того, что настроил решение для тестирования продукта:

Сначала я включил восстановление пакета NuGet. Это позволяет мне полностью избавиться от каталога «packages» из VCS, поскольку пакет с версией, определенной в файле packages.config, будет автоматически загружаться NuGet перед сборкой.Затем я добавил следующее событие предварительной сборки в Visual Studio:$(SolutionDir).nuget\nuget update -prerelease $(ProjectDir)packages.config, Это позволяет мне загружать последнюю версию нашего пакета NuGet во время сборки.

В настоящее время я использую описанный выше сценарий для запуска локальных сборок с использованием Visual Studio и автоматических сборок с использованием TeamCity. На первый взгляд решение кажется подходящим для обоих сценариев, но на самом делеэто не дает ожидаемого результата: когда решение для тестирования продукта построено, вbin Каталог Я не получаю последнюю версию DLL, только последнюю версию-1.

Проблема в том, что хотяnuget update Команда обновляет все как ожидалось, включаяpackages.config и.csproj файл, ихновый контент не подобрана сборкой, поэтому - как я догадываюсь -HintPath настройки из.csproj файл по-прежнему отражает состояние «до сборки», поэтому старые библиотеки DLL копируются вbin каталог. Я предполагаю.csproj файл обрабатывается только один раз: до запуска события предварительной сборки, а изменения, внесенные событием предварительной сборки, игнорируются до следующей сборки.

Я рассмотрел следующие решения:

По-видимому, предварительной сборки недостаточно. Если бы была еще более ранняя точка, я мог бы вставитьnuget update команда, мое решение выше, вероятно, будет работать.Я прочитал, что могу переопределить HintPath-ы в файле .csproj, определив ReferencePath. Но я сомневаюсь, что смог бы легко найти правильный путь или я мог бы установить его достаточно рано, чтобы сборка его подобрала.В качестве обходного пути я мог запустить сборку дважды: дублировать шаг сборки для решения для тестирования продукта в TeamCity, и я всегда мог собрать решение дважды локально в Visual Studio.

Кто-нибудь разобрался, как автоматически обновлять пакет NuGet до последней версии во время сборки?

Ответы на вопрос(3)

Ваш ответ на вопрос