iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 15
0
自我挑戰組

半路出家的工程師重新認識 JavaScript系列 第 15

15. Visual Studio 遇到 TypeScript UsingTask 的解法

  • 分享至 

  • xImage
  •  

前言

最近在幫一個舊案擴充新功能時遇到一個蠻討厭的問題

TypeScript complier 時因為版本關係找不到對應的 UsingTask..

發生的原因目前推測是

  1. 當初建立專案時,電腦安裝的 TypeScript 版本為 1.8
  2. nuget 安裝的 Microsoft.TypeScript.MSBuild 也為 1.8
  3. 換新電腦後只安裝 TypeScript 2.5

於是在 build 專案時就會炸如下圖所示的問題

error


為什麼要安裝 Microsoft.TypeScript.MSBuild

由於目前公司制定專案架構的關係

擴充功能不會放在 Web 專案中,而是另開一個類別庫做開發

但預設 TypeScript 只會編譯設定為啟示專案底下的 .ts

這時我們可以透過 Microsoft.TypeScript.MSBuild 套件來協助

它會在方案建置時重新編譯 .ts,也會在清除方案時將編譯出來的 .js, .map 刪除


發生這問題的懶人解法

經過多方測試,目前最快的解決方法為

  1. 建置(B) => 清除方案(C)
  2. 手動至 Web 專案下將 bin 資料夾內的所有檔案刪除
  3. 開始偵錯(F5) or 啟動但不偵錯(Ctrl + F5)

透過上述三步驟就可以讓錯誤暫時不出現

但問題是每次要建置時都必須重複上述三個步驟,有點不方便


比較好的做法

目前看起來是專案設定的 TypeScript 版本與當前開發環境不同

所以我們就有兩種解決方向

  1. 將開發環境弄得跟專案設定一致
  2. 將專案設定弄得跟開發環境一致

我後來是採取將專案設定弄得跟開發環境一致就解決

首先要先查看當前安裝的 TypeScript 版本

開啟 Developer Command Prompt 輸入 tsc -v
tsc version

將專案的 Microsoft.TypeScript.MSBuild 套件升級至對應的版本即可


結論

在開發時遇到這種專案設定與開發環境設定不同造成的錯誤頗麻煩

同事建議未來如果能利用 docker 來確保開發環境一致或許是個不錯的選擇


上一篇
14. Speaking JavaScript - 函式
下一篇
16. Speaking JavaScript - 加班中尚未有靈感
系列文
半路出家的工程師重新認識 JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言