Visual Studio 2012 的 IntelliSense 與 _reference.js

碰到一個小問題:用 NuGet 更新 ASP.NET MVC 專案的 Knockout.js 之後,發現 Visual Studio 2012 的 IntelliSense 功能不會提示 Knockout.js 語法了....

使用 Visual Studio 2012 的 ASP.NET MVC 4 專案範本所建立的應用程式,會在 Scripts 資料夾底下產生一個 _reference.js 檔案,裡面是一些 .js 的參考路徑:

/// <reference path="jquery-1.8.3.js" />
/// <reference path="jquery-ui-1.8.20.js" />
/// <reference path="jquery.validate.js" />
/// <reference path="jquery.validate.unobtrusive.js" />
/// <reference path="knockout-2.1.0.debug.js" />
/// <reference path="modernizr-2.5.3.js" />

這個檔案會影響 Visual Studio 2012 的 IntelliSense 功能。比如說,我用 NuGet 把 Knockout 更新至 2.2.0 版之後,在網頁中撰寫 JavaScript 時,Visual Studio 就不再出現 Knoutout.js 的語法提示了,如下圖:


如果手動修改 _reference.js,把 "knockout-2.1.0.debug.js" 修正為目前的版本,也就是 "knockout-2.1.0.debug.js",Visual Studio 的 IntelliSense 便又能正常提示 Knockout.js 語法。

我不知道這是否為 NuGet 的 bug,我的 NuGet 版本是 2.2.31210.9044。目前只碰到 Knockout.js 會這樣,其他如 jQuery、jQuery UI、Modernizr 等套件在透過 NuGet 更新時都會自動更新 _reference.js。

IntelliSense 與 _reference.js 的關係

這個 Scripts\_reference.js 檔案之所以會影響 IntelliSense 功能,是 Visual Studio 2012 預設提供的機制。我們也可以透過 Visual Studio 的 TOOLS \ Options 來增加新的或刪除既有的參考檔案,參考下圖:


或者也可以按 Ctrl+Q,在 Visual Studio 2012 右上角的 Quick Launch 文字方塊中輸入「references」來快速移到這個選項。操作方式參考下圖:


(底下可跳過不看)

有了這個 _references.js 的參考機制,我們就不再需要如下圖般繞個彎來獲得 JavaScript 語法提示了。



Copyright © 2012. Huan-Lin 學習筆記 - All Rights Reserved
Powered by Blogger
Template Design by Cool Blogger Tutorials
Published by Templates Doctor