這幾天在摸 python 開發的時候遇到環境安裝失敗的問題,明明在 Ubuntu 底下跑都安然無恙 Windows 錯惹嗎 ?
錯誤訊息如下:
ucrtinttypes.h(27): error C2061: syntax error: identifier 'intmax_t'
興趣使然的軟體工程師,擅長 Exception。
今天心血來潮想試試看可不可以把 ASP.NET Core 部屬在 Docker 裡面 Debug,但我的測試機是 Win7 無法安裝新版 Docker for Windows
於是乎抱著僥倖下載 Docker Toolbox
來試試看
兩者最大差異在於 Docker Toolbox
是運行在 Oracle VM VirtualBox
,而 Docker for Windows
則是可以在微軟的虛擬化技術 Hyper-V
底下運行
如果想要讓現有專案支援 Docker 的話只要對 專案右鍵 -> 加入 -> Docker Support
強大的 Visual Studio 2017 就會搞定基礎設定
這邊的話要選擇 Linux
上面的 Windows
是給 Docker for Windows
選的
接著 Visual Studio 就會幫你下載與設定一些基本環境
接著直接按 F5
執行偵錯模式
噹噹… 他竟然說我沒有安裝 dotnet sdk
------------------------------------------------------------------- You may only use the Microsoft .NET Core Debugger (vsdbg) with Visual Studio Code, Visual Studio or Visual Studio for Mac software to help you develop and test your applications. ------------------------------------------------------------------- Did you mean to run dotnet SDK commands? Please install dotnet SDK from: http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409 The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the target process did not run on .NET Core. The program '[24] dotnet' has exited with code 145 (0x91). '' 程式以返回碼 145 (0x91) 結束。
翻了很久才翻到一篇文章 Docker debugging for ASP.NET Core application is not working 國外也有個勇者想在 Win7 利用 Docker 來 Debug ASP.NET Core
最後被加上了 Closed - Won't Fix
的 Tag 看來這個問題應該是不會修正了
想要在 Docker 上玩 ASP.NET Core 還是乖乖用 Win10 吧
哪天有空了來試試看在 Win10 安裝 Docker 玩玩看
不知道會不會又有其他地雷引爆
最近更新了 Visual Studio 2017 到最新版本,發現在debug的時候 IIS Express 總是被停止運行,再找 bug 的時候發生這件事情實在是很惱人的一件事情,拜了 google 大神後發現微軟竟然在更新的時候偷偷把這個設定啟用,這實在是太坑了 !!
解決方法:將下面兩張圖的勾勾都取消就可以恢復正常囉。
版本:Visual Studio 2017 Enterprise
路徑:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ItemTemplates\CSharp\Code\1028\Class\Class.cs
範本:
using System; using System.Collections.Generic; $if$ ($targetframeworkversion$ >= 3.5)using System.Linq; $endif$using System.Text; $if$ ($targetframeworkversion$ >= 4.5)using System.Threading.Tasks; $endif$ namespace $rootnamespace$ { public class $safeitemrootname$ { } }
這樣就新增 class 時就會自己加上 public 囉