Если вам нужно автоматически обновлять файл nuspec, это действительно просто XML-файл (как я уверен, вы знаете), поэтому есть несколько очень хороших инструментов, которые вы можете использовать из MSBuild для автоматизации создания nuspec / обновления. Из коробки MSBuild предоставляет несколько задач, которые могут обновлять или преобразовывать XML, и я использовал задачи сообщества MSBuild для настройки начального nuspec. Например, nuspec по умолчанию содержит несколько строк с бройлерной табличкой, которые мне не нужны, поэтому я использую задачи XmlUpdate для их удаления.
Хотя я не изучал сканирование файла csproj на наличие ненуклеарных ссылок, я думаю, что это возможно с небольшим исследованием. Вот несколько ссылок на записи блога, описывающие мой опыт автоматизации NuGet, они могут помочь вам начать:
Создание пакетов с NuGet MSBuild Way - Эта статья содержит некоторые базовые обновления NuSpec, поскольку описанный пакет не отличается от типа пакета, который NuGet уже знает, как автоматизировать.
Управление деталями MEF с помощью Nuget - Эта статья содержит некоторые более сложные обновления для поддержки распространения деталей MEF в виде ссылок только для времени выполнения.
Если вы планируете делать это много, не хотите связываться с MSBuild или просто хотите вернуться к поведению, которое вам понравилось в версии ProjectFactory.cs
, выпущенной до 1360 года, NuGet поддерживает стороннее расширение через MEF. Вы можете перейти в систему управления исходным кодом и получить более ранний код, который вам понравился, и создать собственную команду (например, custompack
), которая обеспечивает такое поведение. Тогда вы можете использовать его из командной строки так:
nuget custompack MyProject.csproj -Property Configuration=Release
Я думаю, что это действительно крутой аспект NuGet, но я сам еще не играл с ним. Вот статья, которая объясняет, как это сделать:
Расширение командной строки NuGet
Поэтому, хотя Дэвид упомянул, что NuGet не предназначен для поддержки этого сценария, если сценарий верен для вас , вы можете пойти по этому пути, чтобы расширить NuGet для удовлетворения ваших потребностей.