在將項目升級到 asp.net core 2.2 后,很少使用 IIS Express 運行項目了,基本都是控制台運行或者寫個腳本批量啟動要運行的接口(多個輸出項目),一直以為是我機器的 bug
關於 vs 的 asp.net core 進程調試的這個問題困擾了我好一段時間未曾解決,得空整理記錄一下。
問題描述
一頓操作猛如虎運行 dotnet run
很多個應用程序(前后端分離,多個項目運行的場景)
然后打開項目選擇【調試-附加到進程】(.net framework 要附加到 w3wp.exe,.net core 要附加到 dotnet.exe
)
看到這一排排的 dotnet.exe,一臉懵逼啊!(可能除了多項目還會有其他原因出現更多個,比如 redis 連接沒關閉,https 的原因~)
如上圖,完全不知道要附加到那個進程,最開始沒找到解決方案(懶),直接就給全選了,后面找到解決方案才開始愉快的玩耍
解決方案
新建 run.bat
,寫入以下命令,每次運行時執行腳本運行即可
run.bat 腳本
taskkill /F /T /FI "WINDOWTITLE eq Dotnet.Api1" /IM dotnet.exe
start "Dotnet.Api1" dotnet run
exit
腳本說明
- 關閉名字為“Dotnet.Api1”的 dotnet.exe 進程,新
- 啟動一個標題為“Dotnet.Api1”的窗口運行
dotnet run
或者dotnet watch run
- 退出 run.bat 的 cmd 進程
publish-run.bat
因為前后端是並行開發的,數據對接的過程中,如果改動一下就編譯接口就不太合適,就需要發布運行,可使用下面的腳本快速發布
發布腳本如下,刪除進程,重新發布,再次運行即可
taskkill /F /T /FI "WINDOWTITLE eq Dotnet.Web.Publish" /IM dotnet.exe
dotnet publish -c Release
start "Dotnet.Web.Publish" /D "./bin/Release/netcoreapp2.2/publish/" dotnet Dotnet.Api.dll --urls http://*:2333
exit
腳本執行
在 vs2017 中如果想要快速的執行腳本,可在【工具-擴展和更新】中安裝擴展OpenCommandLine
安裝完成后即可方便的執行腳本了。
總結
邊寫邊查資料的過程中,一步步查找資料最后翻到了 GitHub 的 issues#2007
發現早就有人提出問題,也給出了解決方案 start "My App" dotnet MyApp.dll
~
本文對解決方案進行了補充完善,使其得以更加方便快捷使用。