最近一個專案,需要維護同事寫得程式碼,主要是一堆基於 .net core 3.1
的 Azure Functions。想起2年前第一次接觸 Azure Functions(那次是基於.net framework
),開局很不順,程式碼一直執行不起來。試了網上的各種解決方案,折騰好幾天,最後還是把 visual studio 2017 解除安裝重灌,才解決問題?♂️,不知道這次會怎樣。
好嘛,先克隆程式碼到本地,Visual Studio 2019 開啟解決方案,設定 Azure Functions 專案為啟動項,執行,然後就看到死亡進度條開始了它的表演
等到黃花菜都涼了,看到了如下“重灌預警”警告,反覆執行了幾次都是一樣的結果,想死的心都有了。。。微軟的技術,怎麼說呢,.net core
都出到第三版了,還是這個鬼樣子?。。。
怎麼辦?還是先試試能不能找到不重灌的解決辦法吧!沒有 Google 當然是使用 Bing 搜尋,畢竟是微軟技術棧,手動輸入錯誤資訊, 第一條結果來至 StackOverflow,被標記最佳答案的回答是:重灌!重灌!!重灌!!!讓我緩緩?。。。
我又仔細看了一眼那個“重灌預警”警告,順著資料夾一路找下去,奇怪的事情出現了: ..\Releases\3.23.5
是個空資料夾,..\Releases\3.23.4
下沒有名為cli_x64
的資料夾,但是cli
資料夾下是有一個名為func.exe
的可執行檔案的
所以:是 Visual Studio 2019 的Azure Functions 專案模板執行時讀取的配置項和最新的 Azure Function CLI 配置不匹配導致的問題嗎? 試著在..\Releases\3.23.4
下新建了一個名為cli_x64
的資料夾,並把cli
資料夾下的檔案複製了一份到cli_x64
下(採用複製而不是直接重新命名資料夾,是為了不破壞預設的程式安裝目錄結構,造成開發其他專案時產生潛在的問題),執行,再次出現死亡進度條,過了一會兒,彈出了CMD命令列視窗,程式居然神奇地跑起來了!!!
Azure Functions Core Tools
Core Tools Version: 3.0.3442 Commit hash: 6bfab24b2743f8421475d996402c398d2fe4a9e0 (32-bit)
Function Runtime Version: 3.0.15417.0
[2021-06-20T11:23:16.149Z] Found C:\..\..\XXXXX.Functions.csproj. Using for user secrets file configuration.
Functions:
Version: [GET] http://localhost:7072/api/version
................................................
所以到這裡問題就全部解決了嗎?好像並沒有!發現每次停止後重新啟動都會出現下載彈出框,這不合理?。。。再看下自己剛發現的解決方案,按理說..\Releases\3.23.5
不應是個空資料夾,可能是網速不好沒有下載完成造成的吧!或者還是上面配置不匹配的一部分?畢竟,開發 Visual Studio 和 開發 Azure Functions CLI 的可能不是一個團隊。
那麼,把..\Releases\3.23.4
下的檔案全部複製到..\Releases\3.23.5
下試試?網上搜下確認下,還是來自來水StackOverflow,果然,英雄所見略同?, 不過有個小細節要注意,要修改配置檔案manifest-XXXXXX.json
裡的版本資訊(注意要替換全了,vs code是真的香?)~~
好了,每次停止除錯再執行,終於不用再面對死亡進度條了✌。。。
寫在最後:其實解決這個問題沒有上面描述的那麼麻煩,畢竟工作也有些年頭了?,多碼幾個字,更細節生動地記錄思考過程,總是有些用途的,為了防止被爬,附上原文地址 ,現在想不勞而獲的人/網站太多了?,雖然這隨筆寫得也挺水的?。。。