2011-09-18 57 views
3

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

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

<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

看看这个http://stackoverflow.com/questions/5092516/updating-local-nuget-package-on-post-build-event – Samich

回答

1

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

1

据我所知,通过nuget修改文件是不可能的。这也是不安全的。

我目前捆绑我的js文件到一个,当我更新我的jquery文件时,我去那里并改变它。

如果JQuery不包含文件版本号,那么如果发生任何重大更改,那么会导致代码中断。

+0

+1为解释为什么不修改文件是一个坏主意以及为什么JQuery包含版本号。不过,我希望有一个实际的解决方案 - 通过某种方式提醒我脚本引用不正确。我偶然发现,elmah很好地满足了这个目的。如果有人遇到这种情况,我会把它写成一个答案。 – devuxer

+0

至于解决方案,如果您使用记录器(如log4net)捕获应用程序错误,则会看到文件未找到错误。如果在文本中使用jquery发生应用程序错误,您甚至可以设置Assert()来触发。 –