使用NuGet更新jquery和Modernizer时自动更新脚本引用
注意到客户端验证已停止工作后,我确定jquery和Modernizer的html脚本引用已过时。我立刻意识到这是因为我最近更新了所有NuGet软件包,所以版本号不再匹配 以下是有问题的标记(手动更新版本号后):使用NuGet更新jquery和Modernizer时自动更新脚本引用,jquery,asp.net,asp.net-mvc,nuget,maintenance,Jquery,Asp.net,Asp.net Mvc,Nuget,Maintenance,注意到客户端验证已停止工作后,我确定jquery和Modernizer的html脚本引用已过时。我立刻意识到这是因为我最近更新了所有NuGet软件包,所以版本号不再匹配 以下是有问题的标记(手动更新版本号后): 这是一个维护问题。基本上,每次使用NuGet更新所有包时,我都必须手动增加脚本引用中的版本号。这充其量是一个不便,最坏的情况是,我会完全忘记做这件事,特别是考虑到在NuGet中执行更新或编译期间没有警告 两个问题: 如何改进更新过程,使版本号自动更新,或者至少收到脚本引用不正确的警
这是一个维护问题。基本上,每次使用NuGet更新所有包时,我都必须手动增加脚本引用中的版本号。这充其量是一个不便,最坏的情况是,我会完全忘记做这件事,特别是考虑到在NuGet中执行更新或编译期间没有警告
两个问题:
- 如何改进更新过程,使版本号自动更新,或者至少收到脚本引用不正确的警告?(注意:我已经打开了MvcBuildViews。)
- 为什么jquery和Modernizer在文件名中有版本号,而其他脚本(如jquery.validate和jquery.validate.unobtrusive)没有?这个问题似乎可以通过在文件名中保留版本号来解决
若JQuery不包含文件版本号,那个么若发生任何中断更改,就会导致代码中断 我只是为了在我的网站上记录错误而安装的。事实证明,如果html中的
脚本标记引用了一个不存在的文件,这将在elmah上触发一个错误。由于我已将elmah配置为在遇到错误时向我发送电子邮件,因此这为过时的脚本引用提供了一个足够好的警报机制。最好接收实际的编译错误或警告,但elmah至少可以防止问题被忽略。请查看此+1,了解为什么不修改文件是个坏主意,以及为什么JQuery包含版本号。不过,我希望有一个实际的解决方案——某种方式来提醒我,我有错误的脚本引用。我偶然发现elmah在这方面做得很好。我把它写下来作为一个答案,以防其他人遇到这个问题。至于解决方案,如果您使用日志记录器(如log4net)捕获应用程序错误,您将看到文件未找到错误。如果文本中的jquery出现应用程序错误,甚至可以将Assert()设置为激发。
<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>