2011-09-18 105 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()來觸發。 –