Это противоположная проблема из того, что я обычно читаю, это люди, пытающиеся получить файлы, включенные в пакет NuGet. Я пытаюсь остановка файл из автоматически включается.NuGet Pack: ignore default включает
Я создаю библиотеку предварительно скомпилированных шаблонов MVC (используя RazorGenerator.Mvc), файлы .less
и JavaScript для их поддержки по мере необходимости. Идея состоит в том, что это основные вещи, которые входят во все наши сайты.
По умолчанию nuget pack
включает в себя любые файлы, отмеченные Строить Действие: Содержание в проекте, который любой вновь созданный вид, .less
файл или скрипт будет. Кажется, нет возможности отменить это поведение. Связанный с этим вопрос представил решение empty <files>
node in the .nuspec
to stop all includes, но я хочу включить файлы, только те, которые я выбираю.
Теперь, как затычка, я могу пройти, явно установить все, чтобы не быть Content (не используя None вместо), то явно настройки, какие файлы я и не хочу копировать и куда я их скопирован в файл .nuspec
. Однако, если появится другой разработчик, например, мое будущее, и забудет этот шаг, тогда вновь добавленные файлы будут скопированы в пакет, а затем в проект назначения во время следующей установки или обновления.
Я нашел OctoPack, и это не включая НИЧТО по умолчанию, как только он обнаруживает <files>
узла в .nuspec
, но я не использую ничего другого из TeamCity, и переписывания моих серверных скриптов сборки, чтобы понять, как invoke OctoPack вместо nuget pack не поражает меня как отличный вариант. OctoPack также имеет ограничения; зависимости должны быть перечислены вручную, токены замены для файла .nuspec должны быть переданы в командной строке (вместо чтения с AssemblyInfo.cs
), и это просто не похоже, что инструмент предназначен для этого использования - они даже сказать: «OctoPack следует устанавливать только на проекты, которые вы собираетесь развернуть, - это проекты консольных приложений, проекты Windows Service и веб-приложения ASP.NET. Модульные тесты, библиотеки классов и другие вспомогательные проекты не будут выбраны «. (OctoPack Documentation)
Следующая альтернатива Я пытался использовал msbuild
просто уничтожить группу содержимого во время BeforeBuild
мероприятия:
<Target Name="BeforeBuild">
<ItemGroup>
<Content Remove="**\*.*" />
<None Include="**\*.*" />
</ItemGroup>
<Message Text="Content files: @(Content)" Importance="High" />
</Target>
сообщение подтверждает, что группа Content пуст, но nuget pack
не кажется беспокоиться; он все равно включает все файлы в любом случае.
Кто-нибудь успешно создал такой пакет, без необходимости вручную отмечать все. Строка Действие: Нет и без использования OctoPack?
«Это не идеальное решение, которое было бы чем-то вроде« -no-default-content ». Более совершенное решение позволило бы вам написать что-то в файле .nuspec, чтобы контролировать это. Кто собирается пойти на работу, помня, какие параметры нужно переходить на 'nuget' каждый раз? – binki
Любой, кто использует сервер непрерывной интеграции, не должен помнить. Теперь я должен помнить, что если я добавлю новую зависимость или изменю версию зависимостей, мне придется вручную добавить ее в nuspec, вместо того, чтобы читать эти данные из package.config. –