【问题标题】:Automatically updating script references when updating jquery and modernizr with NuGet使用 NuGet 更新 jquery 和 modernizr 时自动更新脚本引用
【发布时间】:2011-09-18 20:20:49
【问题描述】:

在注意到我的客户端验证停止工作后,我确定我对 jquery 和 modernizr 的 html 脚本引用已过时。我立刻意识到这是因为我最近更新了所有的 NuGet 包,所以版本号不再匹配。

这是有问题的标记(手动更新版本号后):

<script src="@Url.Content("~/Scripts/jquery-1.6.3.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-2.0.6.min.js")" type="text/javascript"></script>

这是一个维护问题。基本上,每次使用 NuGet 更新我的所有包时,我似乎都必须手动增加脚本引用中的版本号。这充其量是一种不便,而在最坏的情况下,我会完全忘记做某事,特别是考虑到在 NuGet 中或编译期间执行更新时没有警告。

两个问题:

  • 我可以做些什么来改进更新过程,以便自动更新版本号,或者至少收到我的脚本引用不正确的警告? (注意:我已经打开了 MvcBuildViews。)

  • 为什么 jquery 和 modernizr 在文件名中有版本号,而其他脚本(例如 jquery.validate 和 jquery.validate.unobtrusive)没有?似乎可以通过将版本号保留在文件名之外来解决问题。

【问题讨论】:

标签: jquery asp.net asp.net-mvc nuget maintenance


【解决方案1】:

据我所知,无法通过 nuget 修改文件。那也是不安全的。

我目前正在将我的 js 文件打包成一个,当我更新我的 jquery 文件时,我会去那里进行更改。

如果 JQuery 不包含文件版本号,那么如果发生任何重大更改,这将导致您的代码出现一些中断。

【讨论】:

  • +1 用于解释为什么不修改文件是一个坏主意以及为什么 JQuery 包含版本号。不过,我希望有一个实际的解决方案——以某种方式提醒我我有错误的脚本引用。我偶然发现 elmah 非常适合这个目的。我把它写下来作为答案,以防其他人遇到这个问题。
  • 作为解决方案,如果您使用记录器(如 log4net)捕获应用程序错误,您将看到文件未找到错误。如果文本中的 jquery 发生应用程序错误,您甚至可以设置 Assert() 触发。
【解决方案2】:

我刚刚安装了elmah 以在我的网站上记录错误。事实证明,如果 html 中的 script 标签引用了一个不存在的文件,这将在 elmah 上触发错误。由于我已将 elmah 配置为在遇到错误时向我发送电子邮件,因此这为过时的脚本引用提供了足够好的警报机制。最好接收实际的编译错误或警告,但 elmah 至少可以防止问题被忽视。

【讨论】:

    猜你喜欢
    • 2014-06-17
    • 2014-05-15
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多