NuGet без кеша в VS 2017 - PullRequest
0 голосов
/ 31 мая 2019

Можно ли сказать, что решение Visual Studio не использует кэши NuGet при восстановлении пакетов в VS 2017? Я знаю, что вы можете передать параметр -NoCache в nuget из командной строки, но VS не дает мне возможности установить эти параметры командной строки.

Я пытался очистить локальный кеш как событие перед сборкой в ​​проекте, но это происходит ПОСЛЕ восстановления nuget, поэтому мне приходится дважды перестраивать, чтобы это решение работало.

Я также пытался вернуться к старому способу восстановления пакетов nuget с помощью NuGet.Targets, но затем я терял использование диспетчера учетных данных, поэтому пакеты полностью не загружались.

1 Ответ

0 голосов
/ 07 июня 2019

Я пытался очистить локальный кеш как событие перед сборкой в ​​проекте, но это происходит ПОСЛЕ восстановления nuget, поэтому мне приходится дважды перестраивать, чтобы это решение работало.

Может быть, вы можете попробовать использовать цель «после сборки» для очистки кэша?

Я имею в виду, что в сценарии, где у вас есть проекты от А до G, проект А потребляетпакет под названием NugetOne.Мы создали проект A, и NugetOne будет добавлен в кеш. (C:\Users\xxx\.nuget\packages).

Теперь мы работаем в проекте B, который также будет использовать NugetOne, мы хотим удалить кеш перед восстановлением, когдапостроение проекта в ВС.Но согласно комментариям выше, этот подход не удался.

Так что, возможно, мы можем добавить цель, которая запускается после сборки, чтобы очистить кеш.И мы можем добавить цель в проект A или проект B, чтобы получить аналогичный результат:

Если мы добавим его в A: После успешного построения A кэш был очищен, то при создании B нам не нужнобеспокоиться о влиянии кэша.

Если мы добавим его в B: он работает как событие pre-build-event, которое вы используете, придется дважды перестроить, чтобы он заработал.

Notконечно, если это то, что вам нужно, но если вы хотите среду разработки, в которой на разработку не будет влиять кеш из других проектов. Вы можете рассмотреть возможность использования Directory.Build.props .

Мое содержимое Directory.Build.props (добавьте его в папку / repos, оно повлияет на все ваши решения в нем, добавьте его в решение и оно повлияет на все проекты в этом решении):

<Project>
 <Target Name="CleanCache" AfterTargets="build">
   <Message Importance="High" Text="Clean the cache..."/>
   <xxx //Do your clean cache action here! />
 </Target>
</Project>

Надеюсьпомогает в некоторых аспектах.

...