我有一个带有 jquery 的 ASP.net 解决方案,例如在某些页面中我像这样引用它:
<script type="text/javascript" src="Scripts/jquery-1.9.1.js"></script>
<script type="text/javascript" src="Scripts/jquery-ui-1.10.2.js"></script>
问题是,现在 Nuget 将对 jquery 的解决方案引用更新到了 2.0 版本,但它尚未更新脚本引用...其他 javascript 引用也发生了这种情况...
我如何引用这些脚本,以便当 nuget 更新它们时它也会更新相关页面引用?
最佳答案
这是一种间接答案,但在许多情况下仍然是一个可行的解决方案。
<小时/>NuGet 更新页面 - 不可行
我不相信 Nuget 能够更新您页面中的任何内容。我不相信它有权执行这些类型的操作。而且,这可能非常不安全。
<小时/>使用捆绑和通配符 - 可行
这是我推荐的方法。它需要 Optimization 包(可以通过 NuGet 下载)。它还减少了发出的请求数量,这总是好的。
本质上,您创建脚本“包”,允许您将多个脚本文件组合在一起(也适用于 CSS)。以下是使用 {version}
的捆绑示例通配符。
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery")
.Include("Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryui")
.Include("Scripts/jquery-ui-{version}.js"));
}
}
然后在 Global.asax.cs 的 Application_Start 方法中注册该包。
最后,您可以更换您的
<script type="text/javascript" src="Scripts/jquery-1.9.1.js"></script>
<script type="text/javascript" src="Scripts/jquery-ui-1.10.2.js"></script>
与
<%: Scripts.Render("~bundles/jquery") %>
<%: Scripts.Render("~bundles/jqueryui") %>
这将在您的文件夹中获取最新版本的 jQuery 并使用它,因此您无需再次更改脚本引用。
注意:"~/bundles/jquery"
string 可以随意调用。
注意:这只适用于.NET 4.5+(感谢Kevin Johnsrude)
引用:Bundling and Minification in Web Forms
另外,虽然你并没有真正问过这个问题,但我觉得有必要提一下。这些脚本引用可以重新定位到 <head>
中的 MasterPage。 block ,这将允许您减少代码重复(并符合 DRY 原则)。
关于jquery - 如何在 Visual Studio 2012 中进行 Nuget 更新页面 jquery 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16581431/