Как предполагается, что сервер blazor будет использовать css-файлы в комплекте из библиотек классов Razor?

#asp.net-core #blazor #blazor-server-side

Вопрос:

Когда у вас есть приложение blazor на стороне сервера и вы напрямую ссылаетесь на библиотеку классов razor (на данный момент я использую dotnet5), кажется, что он автоматически добавляет /_content/.bundle.scp.css, добавив @import в .styles.css. По-видимому, это работает достаточно хорошо, по крайней мере, в отладке, просто добавив ссылку и нажав клавишу F5.

Я вижу противоречивую документацию, добавляющую ссылки вручную во многих местах, и обычно они добавляются в заголовке как ссылки, а не как @import. Я предполагаю, что это, возможно, что-то изменилось со времен core3. Я также не выяснил, где должны «жить» связанные файлы, пока вы все еще разрабатываете, когда вы публикуете, вы получаете папку wwwroot_content, но разработка, которая, по-видимому, не существует в файловой системе и фактически сопоставляется с папками obj отдельных RCLs.

В приложении, над которым я в настоящее время работаю, библиотеки классов razor загружаются во время выполнения, поэтому это не работает автоматически, на данный момент у меня есть пакеты, на которые ссылаются как на отдельные ссылки, программно добавленные в заголовке _host.cshtml после того, как я скопирую их из отдельных RCLs’ obj<Папка сборки>net5.0, поскольку это, похоже, единственное место, где они существуют на диске. Я также обслуживаю их с помощью файлов app.UseStaticFiles из другой папки, так как мне все еще неясно, как должны работать встроенные папки.

Когда я впервые понял, что проблема заключалась в загрузке среды выполнения, я смог получить подтверждение, что здесь не было встроенной поддержки, кроме прямых ссылок https://github.com/dotnet/aspnetcore/issues/33284 и я начал искать, как более правильно реализовать существующий обходной путь.

Я бы предпочел, чтобы это работало как можно более похоже на RCL с прямой ссылкой, но я не нахожу никакой информации о том, предназначены ли пакеты для глобальных ссылок в любое время или условно, я не вижу очевидного способа добавить их в качестве @import программно, и я понятия не имею, каковы будут последствия попытки вручную создать папку _content из файлов пакетов, найденных в различных папках obj.

Как это на самом деле должно работать в разработке и при публикации? Является ли то, что я делаю, даже близким, или есть какая-то вопиющая проблема, с которой я столкнусь в будущем?

Комментарии:

1. Я предполагаю, что вы знаете, где найти файлы CSS библиотеки, как только они будут созданы. Если нет, спросите. Я думаю, что ответ на ваш вопрос заключается в том, что прямого решения не существует. Вероятно, вы можете создать один CSS-файл в комплекте с некоторой настройкой процесса сборки. т. е. дождитесь, пока основной процесс сборки соберет пакеты CSS библиотеки, а затем объединит их в один CSS. Вы также можете динамически добавлять или удалять CSS-файлы. Здесь есть несколько примечаний к коду — shauncurtis.github.io/posts/DynamicCss.html — не готовая статья.

2. теперь я удаляю отдельные библиотеки css в комплекте из папок obj после сборки, которые соответствуют «*obj$BuildFoldernet5.0scopedcssprojectbundle*.css», в отдельную папку, а затем добавляю <ссылку> для каждого элемента в этой папке, чтобы посмотреть в _host… это работает, но я действительно понятия не имею, насколько это близко к встроенной функциональности, или если бы была возможность/значение в том, чтобы вставить его в шаблон _content / @import, используемый встроенным материалом. Если есть лучшее место для источника файлов, которое будет работать при отладке и развертывании, или лучшие способы их включения-это то, о чем я спрашиваю