VS2022下ASP.NET MVC5项目安装SignalR包后未生成依赖脚本
以下是针对该问题的具体排查步骤:
确认NuGet包安装完整性
打开NuGet包管理器,检查是否同时安装了Microsoft.AspNet.SignalR和它依赖的jQuery包(SignalR要求jQuery版本≥1.6.4,需确保版本兼容)。手动查看项目的Scripts目录,确认是否存在jquery-{version}.js和jquery.signalR-{version}.js文件——部分场景下NuGet不会自动将包内脚本复制到项目目录,可从本地NuGet存储路径手动复制:- jQuery脚本路径:
解决方案根目录\packages\jQuery.{版本号}\Content\Scripts - SignalR脚本路径:
解决方案根目录\packages\Microsoft.AspNet.SignalR.{版本号}\lib\net45
- jQuery脚本路径:
检查NuGet包行为设置
在Visual Studio 2022中,依次进入「工具」→「选项」→「NuGet包管理器」→「常规」,确认「允许NuGet下载缺失的包」和「在构建时自动检查缺失的包」已勾选。右键项目→「管理NuGet包」→「设置」,确保启用包还原功能。配置项目脚本复制与捆绑
将复制来的脚本添加到项目Scripts文件夹后,选中文件在属性窗口设置「复制到输出目录」为「如果较新则复制」。同时检查App_Start/BundleConfig.cs,确认已正确添加脚本捆绑配置:bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js")); bundles.Add(new ScriptBundle("~/bundles/signalr").Include( "~/Scripts/jquery.signalR-{version}.js"));验证Startup类配置
确认Startup类已正确注册SignalR路由,避免因配置错误间接引发脚本问题:using Microsoft.Owin; using Owin; [assembly: OwinStartup(typeof(你的项目命名空间.Startup))] namespace 你的项目命名空间 { public class Startup { public void Configuration(IAppBuilder app) { app.MapSignalR(); } } }清理重建项目
右键解决方案→「清理解决方案」,删除项目目录下的bin和obj文件夹,重新构建项目后再次检查Scripts目录。手动引入脚本作为替代方案
若上述方法无效,直接下载对应版本的jQuery和SignalR脚本放入Scripts目录,在视图中手动引用:<script src="~/Scripts/jquery-{version}.js"></script> <script src="~/Scripts/jquery.signalR-{version}.js"></script> <script src="~/signalr/hubs"></script>
内容的提问来源于stack exchange,提问作者David W

