我也可以看到这个问题很古老,但我想我会加两分钱......
我在一个单独的项目中有一个 javascript 文件。我添加了一个链接参考,这对于发布很有效,但在 IIS Express 或 Casinni 中不起作用。我尝试添加自定义路由来捕获丢失的文件并手动重新映射它,但它有点像 hack,当我升级到 MVC 5.1 时由于某种原因停止工作,所以我没有修复 hack,而是找到了一个更好的方法:
System.Web.Optimization 有 javascript 包。
在您的共享项目中,将您的 js 文件中的 Copy To Output Directory 设置为“始终复制”,将 Build Action 设置为“内容”。这意味着您的 js 文件最终位于您网站项目的 bin 文件夹中。它们不能从那里提供(出于明显的安全原因,IIS 不会提供 bin 文件夹中的任何内容),但它们可以包含在包中
using System.Web;
using System.Web.Optimization;
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/externalLibrary").Include(
"~/bin/scripts/externalLibrary.js"
));
}
}
然后您需要将其添加到 global.asax 文件中的 Application_Start 中(就在注册路由旁边)
BundleConfig.RegisterBundles(System.Web.Optimization.BundleTable.Bundles);
然后在你的剃须刀 cshtml 中使用你的捆绑链接:
<script type='text/javascript' src='@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/externalLibrary")'></script>
您将需要 microsoft.aspnet.web.optimization 的 nuget 包