包括所有匹配regex razor cshtml的文件

Bla*_*axy 1 c# razor asp.net-core-mvc asp.net-core

我想在 CSHTML 文件中包含 Angular2 构建文件。

目前,我的包括:

@section scripts {
    <script src="~/dist/main.js" asp-append-version="true"></script>
}
Run Code Online (Sandbox Code Playgroud)

但是 Angular2 会在每个 prod 构建中生成文件名中具有不同标识符的文件。

chunk    {0} main.2e0750e4cb976b8dca8a.bundle.js (main) 15.8 kB {3} [initial] [rendered]
chunk    {1} styles.b64dd2f7c2e3011c4efb.bundle.css (styles) 154 kB {4} [initial] [rendered]
chunk    {2} scripts.e7e62c29938f18f13e86.bundle.js (scripts) 128 kB {4} [initial] [rendered]
chunk    {3} vendor.05b8df0708b580c61647.bundle.js (vendor) 3.42 MB [initial] [rendered]
chunk    {4} inline.1b4aa06545162c1bb581.bundle.js (inline) 0 bytes [entry] [rendered]
Run Code Online (Sandbox Code Playgroud)

我不想停用(如果可能的话)包含这些标识符的事实(用于非缓存目的)。一个人在 github 问题页面上回答了一些正则表达式可以用来制作包含:

/(main|styles|scripts|vendor|inline).*.bundle.(map|js|css)/g
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将它传递给我的 C#/cshtml 文件。

它应该导致在给定目录(wwwroot 或 ~ 作为快捷方式)中包含与模式匹配的所有文件

关于如何实现这一目标的任何想法?

Tse*_*eng 5

您可以将asp-src-include标签助手用于脚本和asp-href-include链接 (css)。

<script asp-src-include="~/dist/main.*.bundle.js" asp-append-version="true"></script>
<link asp-href-include="~/dist/styles.*.bundle.css"/>
Run Code Online (Sandbox Code Playgroud)

但是 iirc 您不能在其中使用正则表达式,只能使用全局路径(即dist/**/*.js** 也将查看所有子文件夹。

如果这不符合您的需求,您需要编写自己的标签助手。

有关LinkTagHelperScriptTagHelper 的当前实现,请参阅 GitHub 。

无论如何,我不建议您将正则表达式用于主要部分,因为您无法控制包含文件的顺序。所以最好手动控制它,只使标识符/哈希和变量。