webpack 'asp-src-include'不会解析档案

wnavrhmk  于 2022-11-13  发布在  Webpack
关注(0)|答案(2)|浏览(139)

我正在用ASP.NET Core、typescript、react和webpack构建一个web应用程序。它被称为Ui.WebApp。React应用程序位于Ui.WebApp/ClientApp,webpack构建输出到Ui.WebApp/ClientApp/dist。在我的Startup.cs中,我包含了

app.UseStaticFiles(new StaticFileOptions {
        FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "ClientApp/dist"))
    }
);

当我在_Layout.cshtml中加载<link rel="stylesheet" href="~/main.css" asp-append-version="true" type="text/css" />的样式时,它是有效的,而<link rel="stylesheet" href="~/main.css" asp-append-version="true" type="text/css" />实际上驻留在Ui.WebApp/ClientApp/dist/main.css中。
现在,我需要在webpack中构建脚本,在它们的名称中使用哈希,即main_968495a262da1789981f.js。在ASP.NET中的模式是使用<script asp-src-include="~/main_*.js"></script>。但是,当从浏览器查看页面时,没有得到脚本标记,因为我假设ASP.NET没有找到任何匹配该模式的文件(但我可以在文件资源管理器中看到它)。
奇怪的是,当我手动将散列后的js文件放入Ui.WebApp/wwwroot(否则我不会使用它)时,脚本标记被正确地填充,甚至当我删除文件夹并刷新页面时,它们仍然存在。
所以我假设ASP.NET在编译时验证标记助手,因此看不到我在Startup.cs中所做的配置。
有没有什么方法可以让ASP.NET在运行时验证标记助手并选择正确的位置?

mbskvtky

mbskvtky1#

我刚刚遇到这个问题,我想我已经弄明白了。很多例子都显示使用了代字号,但是如果你看一下intellisense提示,它说这是相对于你的Webroot设置的。所以你不需要代字号,事实上它似乎打破了它。这似乎至少对.net core 2.1是正确的
我最终在您的示例中实现了如下功能:

<script asp-src-include="main_*.js"></script>

这是我的第一次尝试,但没有成功:

<script type="text/javascript" asp-src-include="~/dist/**/*.js"></script>

但是当改变到这个,它确实!

<script type="text/javascript" asp-src-include="dist/**/*.js"></script>

希望这能为其他人节省大量的挫折感。

xfyts7mz

xfyts7mz2#

任何遇到asp-src-include问题人都应该检查项目是否包含@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers如果TagHelper根本不工作,可以提供帮助

相关问题