Подтвердить что ты не робот

Font-awesome не работает bundleconfig в MVC5

Если я ссылаюсь на font-awesome.css на странице _layouts. он будет работать

<link href="~/Content/font-awesome-4.0.3/css/font-awesome.css" rel="stylesheet" />

Но я использовал в BundleConfig.cs. Значок не отображается.

 bundles.Add(new StyleBundle("~/Content/css").Include(
                        "~/Content/font-awesome-4.0.3/css/font-awesome.css",
                        "~/Content/bootstrap.css",                        
                         "~/Content/body.css",
                        "~/Content/site.css",
                        "~/Content/form.css"
                     ));

а также я наблюдал, что в консоли браузера есть ошибка в каталоге шрифтов. Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:51130/fonts/fontawesome-webfont.woff?v=4.0.3

что может быть проблемой?

4b9b3361

Ответ 1

Попробуйте использовать CssRewriteUrlTransform при связывании:

bundles.Add(new StyleBundle("~/Content/css").Include(
        "~/Content/bootstrap.css",                        
        "~/Content/body.css",
        "~/Content/site.css",
        "~/Content/form.css"
    ).Include("~/Content/font-awesome-4.0.3/css/font-awesome.css", new CssRewriteUrlTransform());

Это изменяет любые URL-адреса ресурсов из файла css на абсолютные URL-адреса, чтобы связывание не мешало относительному пути.

Документы для CssRewriteUrlTransform

Ответ 2

Мое решение было простым: запустите PM > Install-Package FontAwesome и укажите правильный путь:

.Include("~/Content/font-awesome.min.css")

Ответ 4

В версии 5.1.0 мне пришлось ссылаться на all.css вместо fontawesome.css т.е.

bundles.Add(new StyleBundle("~/bundles/fontawesome").Include(
    "~/Content/all.css",
    new CssRewriteUrlTransform()
));

Ответ 5

У меня также было такое же сообщение об ошибке. Мне пришлось выполнить комбинацию ответов, перечисленных в этой теме:

  • Добавьте эту строку кода, предложенную @Simon C:

    .Include( "~/Content/font-awesome-4.0.3/css/font-awesome.css", новый CssRewriteUrlTransform());

Это работало, чтобы исправить относительные URL-адреса, однако мне пришлось удалить файл font-awesome.min.css из моего каталога bower каждый раз, когда я публиковал иначе, связующее устройство запуталось бы и не включило бы и не уменьшило бы шрифт-awesome. css файл. Так что...

  1. Мне нужно было сделать то, что @miha предложила в комментарии, и исправить относительные URL-адреса в файле font-awesome.min.css с помощью CssRewriteUrlTransform(). Поэтому я решил переписать URL-адреса в файле .min и просто указать, что вместо unminified версии и это сработало:

    .Include( "~/Content/font-awesome-4.0.3/css/font-awesome.min.css", новый CssRewriteUrlTransform());

Если я правильно понял, связующий не будет пытаться снова минимизировать файл .min, потому что он уже изменен. Единственный "недостаток" - это не конкатенация содержимого font-awesome.min.css в один файл css, создаваемый компоновщиком. Он будет включен отдельно.

Ответ 6

Я добавлю еще один ответ на этот вопрос, если я нашел решение, смешав некоторые из них.

  1. Ответ с наибольшим количеством голосов является основным решением, но также важно
  2. Добавьте запись, предложенную этим ответом. в заключение
  3. Следуйте комментарию @feradz в ответе с наибольшим количеством голосов: "удалите версию .min.css - это приводило к тому, что оптимизатор не генерировал свернутую версию с правильным путем"

Последний пункт является ключевым из всех: распространяемые версии файлов js "min" не подчиняются правилам "CssRewriteUrlTransform". Таким образом, ручное удаление bootstrap.min.css, font-awesone.min.css окончательно решило проблему.