Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用NuGet更新jquery和Modernizer时自动更新脚本引用_Jquery_Asp.net_Asp.net Mvc_Nuget_Maintenance - Fatal编程技术网

使用NuGet更新jquery和Modernizer时自动更新脚本引用

使用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中执行更新或编译期间没有警告 两个问题: 如何改进更新过程,使版本号自动更新,或者至少收到脚本引用不正确的警

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

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


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

两个问题:

  • 如何改进更新过程,使版本号自动更新,或者至少收到脚本引用不正确的警告?(注意:我已经打开了MvcBuildViews。)

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


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

我目前正在将我的js文件捆绑成一个文件,当我更新我的jquery文件时,我会去那里更改它


若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>