在注意到我的客户端验证已停止工作后,我确定我的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)则没有?看起来这个问题可以通过保留文件名之外的版本号来解决。
答案 0 :(得分:1)
据我所知,无法通过nuget修改文件。那也是不安全的。
我目前正在将我的js文件捆绑成一个,当我更新我的jquery文件时,我去那里更改它。
如果JQuery不包含文件版本号,那么如果发生任何重大更改,这将导致代码中断。
答案 1 :(得分:1)
我刚刚安装了elmah来记录我网站上的错误。事实证明,如果html中的script
标记引用了不存在的文件,则会触发elmah上的错误。由于我将elmah配置为在遇到错误时向我发送电子邮件,因此这为过时的脚本引用提供了足够好的警报机制。收到实际的编译错误或警告会更好,但elmah至少可以防止问题被忽视。