2021年6月13日 星期日

Visual Studio 2015 Community Update 3 坑爹的問題

markdown 最近遇到的一個坑爹的問題,就是發現 visual studio 的測試總管中,沒有顯示我的測試方法,像下圖一樣,甚麼都沒有。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgM6HqBURmjHAGNiQe4dDY6vddyD5w6VNcok_ABzt4v6T-f_3aTuw87y7H77r_Yzlz8VJFxCz_YTxxfOFsG8cJltfU8luGP7hoYfK1rYe223Qvn7ptm4F1pL9wBZ2sMYouYzTrYzZm-dQMV/s0/Image+1.png) 我試著執行測試,是可以執行的,只是也沒有顯示任何測試結果。一開始我先在 google 盲目搜尋,找了一些解法。 例如[安裝 MSTest.TestAdapter](https://stackoverflow.com/questions/42861930/unit-tests-not-discovered-in-visual-studio-2017/44338786#44338786),沒用,這個解法是要解決 VS「找不到」測試方法的問題,但我發現我的 VS 的 log 顯示它有找到我的測試方法,但就是沒顯示出來。 還有說刪除 [%LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache](https://stackoverflow.com/questions/25304425/visual-studio-2013-doesnt-discover-unit-tests) 路徑就好的,也是沒用。 然後我發現 VS 會顯示一個錯誤,看起來跟測試有關。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh83iDDWq6iOnSbo0fxjXGDw57W4tyA_T_zqBE77CDH2dgFPJ2LT0XdNin9epqtMgKn0B3P0syM5bpqljLwwRHIZkkYKEX_q6eEk2wnjJV26DpWEYO3R06K9A4RZXbjsKNVUfSa_PuLCk96/s0/Image+2.png) 就以這個組件名稱當關鍵字搜尋,然後就找到 [microsoft forums](https://social.msdn.microsoft.com/Forums/sqlserver/en-US/04be3174-4811-4f35-930a-d1766e4d8b3a/my-uni-tests-disappeared-after-updating-visual-studio?forum=vsunittest) 的一篇討論,這裡有人也遇到一樣的問題,而且他的 VS 版本跟我一模一樣,我也是 14.0.25424.00 Update 3。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigLrnPUU_v73tzQshNRlILyVmQ7l3rmgk7gkxSg-fA4HmMCyif_QV6P6dhyI9pj6WBU4fpvuRuEkHL6ei1DPOtDEeL5MJMp57JbMASJ1ArOmlNyb4ZK1dse3bs7dzre8uMm4WZpg27O89i/s0/Image+3.png) 這個人他說了,他發現這個問題只有在非英文版的 VS 才會出現,他裝的是德文版,而且只要把 `C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\de` 目錄改名,問題就解了。 我裝的是中文版 VS,在我的電腦中,路徑是`C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\zh-Hant`。 這個資料夾裡面放了很多 Microsoft.VisualStudio.TestWindow 開頭的 dll,而且從資料夾的名稱和路徑看起來,這裡面應該是用來支援不同語言包的測試相關的組件。我試著把資料夾改名,的確測試總管就找到我的測試方法了,不過 UI 變成英文的。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9f-txiYRQPhWLQjNjFtYV_2Xe9Q0bpmBZi26HvoqjwGf9_kh6NrrQKSmYzbW5mJou-PHwkndvfUDFRLB_9Q7gtItbuHhXuTUMWyg_oCLPvoyu2BkSpnkjilZziIFWQE4XHtl2-eFKrOnZ/s0/Image+4.png) 到這裡整個情況就很清楚了,原本我的測試總管沒有顯示測試方法,是因為 VS 預設安裝的測試總管用來顯示中文介面的語言包組件有問題,把資料夾改名了之後,他用回英文的語言包組件,就可以正常顯示了。 本來這樣也是可以用了,但這個討論串裡有個好心人把各種語言的正確語言包組件附上了,為了怕這樣的好東西之後連結失效不能用了,我也放到我的 blog 中。 [下載連結](https://drive.google.com/file/d/1K7bB1KsxyVc8n3IhpcX_kVoD0rTNE0Er/view?usp=sharing) 出問題的就是 Microsoft.VisualStudio.TestWindow.Core.resources.dll,我將上面語言包 CHT 內的 dll 覆蓋掉 VS 預設安裝的,測試總管就可以正常顯示,而且是中文介面。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbC296QUef0CRZ76NfaLzauehd4KGUXz-1OIkgZDVYgCWOtcjpDf9euOwnJkZCcSkl79fuMV58cJkpqFVM_RG9QrJqVBfzvvTmRNttnH9OsYQ6i0AogBpquKtJTRIkXldzIOZX9MOYwHj0/s0/Image+5.png) 至於該討論串中微軟的人後來提供的解法,也就是移除 KB3165756 (visual-studio-2015-update3),我就沒試了,因為從這個 KB 名稱來看,移除就是把整個 update 3 移除了,可能會移掉一些有用的東西。 --- * [My uni tests disappeared after updating Visual Studio](https://social.msdn.microsoft.com/Forums/sqlserver/en-US/04be3174-4811-4f35-930a-d1766e4d8b3a/my-uni-tests-disappeared-after-updating-visual-studio?forum=vsunittest)

2021年6月12日 星期六

[Android] Dialog 背景 DIM 效果

markdown FAB 有個常見的效果時,顯示 FAB 菜單的時候,background 會變暗,想研究一下這個效果要怎麼達成,第一個想到的是,這個效果跟 Android 顯示 Dialog 的時候很像,就想看一下 Dialog 是怎麼做到這件事的,看能不能將 Dialog 的作法借用過來。 經過一些 study 後,發現 activity 其實會對應到一個 window(window 的意義是甚麼以後有機會再說吧),系統會將 window 關連到的 View 繪製在螢幕上,而 Dialog 會在其內部建立一個新的 window,這個 window 位置會疊在 activity 的 window 之上(造成 Dialog 的懸浮效果),Dialog window 的 background 是透明的,並且將這個 window 的 dimAmount 設置為 0.6 來達成背景變暗的效果。 這個方法是蠻方便的,不過不適合用在 FAB 菜單顯示,總覺得不需要再建一個 window,而且還要處理 window 間的事件傳遞,也比較麻煩吧。 --- * [關於給Dialog設置setCanceledOnTouchOutside(true)後如何監聽Dialog消失](https://blog.csdn.net/qq_16247851/article/details/72794409)