У меня есть обычное веб-приложение ASP.NET, которое используется несколькими сайтами. Я использовал NuGet, чтобы упаковать это обычное веб-приложение и распространить его по нескольким сайтам. Следуя этой идее: несколько веб-приложений ASP.NET в зависимости от общего базового приложения.
Делая это, я получаю некоторые проблемы. При обновлении до новой версии NuGet становится очень медленным. Это из-за 800 файлов контента, которые он содержит. Каким-то образом NuGet требуется около 1–2 секунд для удаления каждого файла содержимого, в результате чего на удаление уходит примерно 25 минут, а на установку – 5 минут. Особенно с TFS-привязкой. Глядя на исходный код NuGet, я понял, что API Visual Studio, с которым общается NuGet, является узким местом. Вынуждение Visual Studio на пике 100% загрузки ЦП на протяжении всего процесса.
Поэтому я подумал, что если Visual Studio такая медленная, возможно, я смогу обойтись без нее. К моему разочарованию, командная строка NuGet (которая работает без Visual Studio) только загружает пакет и распаковывает его. Он не будет обновлять файл проекта из-за того, что некоторые Powershell-скрипты могут ссылаться на DTE-объект... (хотя я этого не делаю).
Теперь мне интересно: какие у меня есть варианты?
- Выполняете некоторую XML-магию в файле проекта, чтобы добавить элементы контента? Каковы недостатки этого? Есть ли уже инструмент для этого?
- Совершаете магию со скриптами сборки?
- Выбросить файлы содержимого из пакета и использовать другой инструмент, например Bower или что-то в этом роде? Как это можно интегрировать в проект? Потому что в конечном итоге я хочу увидеть файлы контента, которые у меня есть.
- Не используя NuGet вообще, а что-то еще...? Открытая упаковка? Рог? (кажется, больше не активен) А может вообще нет менеджера пакетов?
Пожалуйста, помогите мне найти лучшее решение :)
.
Еще одна вещь, которая меня расстраивает, заключается в том, что при выполнении обновления NuGet выполняется удаление, за которым следует установка. Зачем, если изменения между версиями могут быть минимальными?