顯示具有 Visual studio 標籤的文章。 顯示所有文章
顯示具有 Visual studio 標籤的文章。 顯示所有文章

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)

2018年7月25日 星期三

Visual Studio 2013 UnitTest ArgumentException

在 Visual Studio 2013 中執行 UnitTest 時遇到 ArgumentException,後來發現是因為選錯了 UnitTestFramework 的緣故

無法設定類別 TestProject1.UnitTest1 的 TestContext 屬性。錯誤:  System.ArgumentException: 類型 'Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapterContext' 的物件無法轉換成類型 'Microsoft.VisualStudio.TestTools.UnitTesting.TestContext'。

因為我的電腦裡有裝 Visual Studio 2013 跟 Visual Studio 2015,在加入 UnitTestFramework 參考的時候有多個不同版本的 UnitTestFramework 可以選,需選擇現在使用的 Visual Studio 版本內的 UnitTestFramework

Visual Studio 2013 的版本為 12,所以應該選擇下面這個目錄下的 UnitTestFramework
 
C:\Program Files\Microsoft Visual Studio 12.0

2017年7月20日 星期四

visual studio Ctrl + F5 無法繼承系統環境變數

在寫 C# 時遇到一個問題, 修改了系統環境變數 PATH 之後, visual studio Ctrl + F5 重新開啟程式後卻發現程式裡面 PATH 環境變數一直都沒有更新, 但是直接雙擊 build 好的 exe 檔卻可以讀到更新後的 PATH 變數, 後來才想到 Ctrl + F5 後程式是由 visual studio 也就是 xxx.vshost.exe 叫起來, 所以他繼承的一直是 xxx.vshost.exe 的環境變數, 當然一直是舊的囉

所以, 只要把 visual studio 重開, 讓他重新讀取新的環境變數就可以了, 環境變數造成的問題真是有一些小眉角需要注意

2016年8月14日 星期日

visual studio include dll in project 導致 build fail

遇到一個神奇的 build fail
明明在 visual studio 已經 reference 了某個 dll
該 dll 也確定有 export 需要的 method 出來
但是在 object browser 就是看不到那個 method 導致無限的 build fail

查了快一小時 才發現這個 project 裡面同時存在一個舊版的 dll
但是不是以 reference dll 的方式  是以 included file 的方式在 project 裡面
visual studio 不知是吃錯甚麼藥  總是以為他 reference 到的是舊版 dll
後來把舊版 dll exclude 出 project  就 build 成功了

但是舊版 dll 明明不是以 referenced dll 的方式存在 project
為什麼 visual stdio 會誤認?
只能認為是 visual studio 的 bug 了

2015年11月14日 星期六

Visual Studio 2010 MVC unit test fail with IIS Express

在 visual studio 2010 下面開了一個 MVC 專案, 然後啟用 unit test 想要看 code coverage rate
但是 test fail, 看 vs 報出來的訊息是 no agents are marked online to execute test run



看不懂這是甚麼意思, 拿去 google 後也找不到甚麼有用的訊息
花了很多時間上網查資訊, 發現我當初在啟用 code coverage 時的選項好像跟網路上的教學不太一樣





怎麼別人的路徑都是<Solution Directory>, 我是 local url 呢
試了一陣子才發現, 因為我的 project 是設定成用 IIS express debug
當我把 debug server 改成 vs 內建的 visual studio development server 後
多了一個選項讓我選了


之後終於成功跑出 unit test

不過奇怪的是網路上都只有說要用 IIS Express 來 debug MVC project
誰知道跟 unit test 一起用會出問題阿~~

2013年11月21日 星期四

Visual studio C# Web project 專案類型

使用 Visual studio 來開發網站的話, 會發現有很多不同的 project 類型可以選
例如:
Web site
Web application
Web application MVC
等等

















這些不同的專案類別可能程式碼目錄結構和可用的內建類別會不一樣,
但功能都是用來開發網站

比較值得注記的是, web site 專案類別是採用自動編譯模式
當使用者發出一個網頁 request 的時候, 伺服器自動把程式編譯成 dll 並執行
而 Web application 專案就是必須要先手動把程式編譯成 dll, 使用者才能連上網站