Когда я создаю новый ASP.NET MVC Core с таргетингом на 2.1 RC1, он не создает файл bundleconfig.json, который используется для объединения и минификации. Этот файл создается, если я нацелен на 2.0.
Вот пример, решение содержит новый проект с таргетингом на 2.0 и другой таргетинг на 2.1:
Что-то заменило встроенное объединение и минификацию, или это просто ошибка в RC1?
У меня была та же проблема, я смог скопировать существующий файл пакета в проект, и это сработало для меня. Вам нужно следуйте этому руководству и установить расширение Bundle & Minifier… также убедитесь, что вы используете VS 15.7.
Похоже, что файл пакета не включен в последний шаблон проекта.
bundleconfig.json был удален из шаблонов 2.1, поскольку он полагался на инструмент, не созданный и не поддерживаемый Microsoft. См. https://github.com/aspnet/templating/issues/326.
This file [bundleconfig.json] is for configuring the various incantations of the BundlerMinifier tool, which isn't actually shipped in the templates, or supported by Microsoft.
Команда ASP.NET Core заменила bundleconfig на «libman». Щелкните правой кнопкой мыши проект -> Добавить -> Клиентская библиотека и добавьте нужные пакеты.
Спасибо, я заметил, что для работы BundlerMinifier требуется установка пакета Nuget. Я играл с LibMan на прошлой неделе, я не понимал, что он справляется с объединением и минификацией, документы и примеры легкие. Кроме того, он не был окончательно вырезан для 15.7, вы должны установить 15.8 Preview для использования. Я понимаю логику удаления, но, поскольку LibMan был удален из 15.7, возникнет пробел с шаблонами, поскольку .NET Core 2.1 будет RTM перед выпуском 15.8. Как бы мне ни нравился ASP.NET Core, с управлением пакетами на стороне клиента слишком много беспорядка и путаницы.
Хотя у Nuget были свои ограничения, для многих из нас он работал достаточно хорошо для управления библиотекой client-sde. Я бы хотел, чтобы было приложено больше усилий, чтобы заставить его работать с ASP.NET Core, что избавило бы нас от попыток выяснить, какую комбинацию Bower, npm, glup, grunt, webpack и LibMan использовать.
Не понимал, что он был вырезан из VS 15.7. Я всегда использую предварительные версии VS, поэтому думал, что он выпущен на стабильный канал.
Кроме того, да, NuGet был не очень хорошо разработан для управления библиотекой на стороне клиента. Я использовал пряжу и веб-пакет с aspnetcore, и это хорошо работает для моей команды
Проблема заключается в текущем состоянии ASP.NET Core 2.1 и VS 2017 15.8 (предварительная версия), у нас нет встроенного управления пакетами на стороне клиента, объединения или минификации. Для разработчика, пришедшего из ASP.NET MVC 5, неутешительно использовать шаблон по умолчанию и осознавать, что файлы JavaScript статичны, и остается досадно тратить время на исследование управления библиотекой на стороне клиента. Опять же, я знаю, что на стороне клиента NuGet были ограничения, но этого было достаточно для приложений с небольшим количеством библиотек, но хотелось иметь возможность управлять зависимостями и централизовать управление обновлениями.
Вы используете установщик пряжи (marketplace.visualstudio.com/…) для VS?
Я использую пакет Yarn.MSBuild, который вызывает команды пряжи в качестве целей MSBuild. Однако это в основном для сборок CI. В основном с использованием VS Code, поэтому легко запускать команды из интегрированной командной строки, такие как запускать 'webpack --watch', для создания клиентских ресурсов отдельно от .NET.
Я только что установил Bundler и Minifier в свой проект ASP.NET Core MVC. Когда я щелкнул правой кнопкой мыши Bundler и Minifier> Bundle File, он создал для меня bundleconfig.json
, который я мог затем настроить для объединения в каждую сборку. При публикации моего веб-приложения в Azure были отправлены правильные миниатюрные файлы CSS и JS.
Одним из недостатков является то, что вам нужно минимизировать каждый файл, что для меня не имеет значения, поскольку у меня их два, но я думаю, что в большинстве реальных проектов будет намного больше.
Обратите внимание, что это работает для net core 2.2, не уверен насчет 2.1. Также обратите внимание, что в net core 3 вместо него должны (должны?) Использоваться «локальные инструменты»: https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-3-0#local-tools.
Наконец-то удалось успешно настроить предварительную сборку с использованием рекомендованного (на момент написания) пакета BundlerMinifier.Core
.
Добавьте в файл .csproj следующее:
<!--
WARNING: don't update to latest version of BundlerMinifier.Core (as of 3.2.435)!
3.0.415 is the latest version that appears to work with this method of
automating bundling/minification
-->
<ItemGroup>
<PackageReference Include = "BundlerMinifier.Core" Version = "3.0.415" />
<DotNetCliToolReference Include = "BundlerMinifier.Core" Version = "3.0.415" />
</ItemGroup>
<Target Name = "RestoreToolsAndBundle" BeforeTargets = "Build">
<Exec Command = "dotnet tool restore" />
<Exec Command = "dotnet bundle" WorkingDirectory = "$(ProjectDir)" />
</Target>
Обратите внимание, что это должен быть все, который вам нужен; вам не нужно ни расширение VS Bundler & Minifier, ни пакет BuildBundlerMinifier.
Попробуйте выполнить сборку, и вы, надеюсь, увидите в Output
, что объединение и минификация завершены в соответствии с вашим bundleConfig.json
.
Спасибо! Это решение буквально единственный, которое, как я обнаружил, действительно работает.
Просто добавьте BuildBundlerMinifier Nuget в проект и перестройте его.
Опция 1
Установите пакет BuildBundlerMinifier из NuGet, а затем, как только вы соберете проект, будут созданы пакеты.
Вариант 2
Установить расширение Бандлер и минификатор Visual Studio
Вариант 3
Вы можете использовать средства запуска задач, такие как Gulp, Grunt или Webpack, для более продвинутых сценариев объединения и минификации.
Вы можете прочитать My Пошаговое руководство по объединению и минификации в ASP.NET Core, который научит вас следующему:
Кроме того, с 2021 года, пожалуйста, рассмотрите мой ответ на аналогичный вопрос SO здесь: https://stackoverflow.com/a/66659756/5101
TL; DR; - Используйте пакет nuget WebOptimizer Core от Мадса Кристенсена для .NET Core 3+ и .NET 5+.
Я использую 15.7.1. Я заставил его работать, добавив файл вручную, но мне интересно, почему они удалили его. Интересно, заменяет ли что-нибудь.