最近安裝了 nuget 的 NPOI 來處理 excel 檔案
在 Ubuntu 的 Linux 環境發生了 The type initializer for 'Gdip' threw an exception. 的錯誤訊息
執行 sudo ln -s /lib/x86_64-linux-gnu/libdl.so.2 /lib/x86_64-linux-gnu/libdl.so
執行完畢,就能解決這個問題。
2019年2月22日 星期五
怎樣判斷 .NET Core (包含 ASP.NET Core)是 Debug 或 Release ?
用 JustDecompile 可以看到 DLL 的資訊
下面是 Debug 版本的資訊 :
下面是 Release 版本的資訊 :
這樣我們可以用下面的程式碼,判斷 DLL 是否為 Debug 版本。
下面是 Debug 版本的資訊 :
下面是 Release 版本的資訊 :
這樣我們可以用下面的程式碼,判斷 DLL 是否為 Debug 版本。
2019年2月20日 星期三
在多個 .NET Core 版本之間進行切換
建立一個 global.json
{
"sdk": {
"version": "2.1.503"
}
}
只要指定版本號,就能執行 .NET Core 特定版本號
{
"sdk": {
"version": "2.1.503"
}
}
只要指定版本號,就能執行 .NET Core 特定版本號
升級 dotnet core 3.0 造成 Blazor for dotnet core 2.1 無法執行的問題解決
編譯後在 ubuntu 上執行發生錯誤訊息:
It was not possible to find any compatible framework version
The specified framework 'Microsoft.AspNetCore.App', version '2.1.8' was not found.
原因是 AspNetCore 預設使用 2.1.8
而 Blazor 只能在 2.1.7 上正常執行
解決方法是修改 Visual Studio 的 *.csproj
指定 AspNetCore 的版本號為 2.1.7
PackageReference Include="Microsoft.AspNetCore.App"
修改設定指定版本為 2.1.7
(AWS EC2 預設 Image 為 2.1.2 改成 2.1.2 試過可以正常執行)
PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.7"
重新編譯後的新版本就能正常的執行了
PS.如果在 Visual Studio 2017 出現錯誤訊息:
Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'Microsoft.AspNetCore, Version=2.1.7.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
只要把剛剛的修改還原就能 Debug 了。
It was not possible to find any compatible framework version
The specified framework 'Microsoft.AspNetCore.App', version '2.1.8' was not found.
原因是 AspNetCore 預設使用 2.1.8
而 Blazor 只能在 2.1.7 上正常執行
解決方法是修改 Visual Studio 的 *.csproj
指定 AspNetCore 的版本號為 2.1.7
PackageReference Include="Microsoft.AspNetCore.App"
修改設定指定版本為 2.1.7
(AWS EC2 預設 Image 為 2.1.2 改成 2.1.2 試過可以正常執行)
PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.7"
重新編譯後的新版本就能正常的執行了
PS.如果在 Visual Studio 2017 出現錯誤訊息:
Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'Microsoft.AspNetCore, Version=2.1.7.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
只要把剛剛的修改還原就能 Debug 了。
2019年2月14日 星期四
為 Ubuntu 增加 PATH 的環境變數
修改系統檔案都要用 root 權限
先執行 sudo su 換 root 權限
可以用 vim /etc/profile
然後
按下 i
在檔案末端加上
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet
或直接指定安裝路徑
export DOTNET_ROOT=/usr/share/dotnet
export PATH=$PATH:/usr/share/dotnet
輸入 :wq
離開 vim 編輯
執行 . /etc/profile
就能在任何目錄上呼叫 dotnet 了
先執行 sudo su 換 root 權限
可以用 vim /etc/profile
然後
按下 i
在檔案末端加上
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet
或直接指定安裝路徑
export DOTNET_ROOT=/usr/share/dotnet
export PATH=$PATH:/usr/share/dotnet
輸入 :wq
離開 vim 編輯
執行 . /etc/profile
就能在任何目錄上呼叫 dotnet 了
2019年2月13日 星期三
NLog 的 NLog.config 的設定簡介
NLog 的 NLog.config 的設定內容主要有兩個 target 與 rules
target 內容如下:
target name="fatalFile" xsi:type="File"
fileName="${basedir}/Logs/FatalFile.txt"
layout="${longdate} | ${level:uppercase=true} | ${message} ${newline}"
target 的 fileName 為檔案名稱。
${basedir} 表示目前程式執行的目錄(暫訂為 c:\temp)
所以輸出的檔名會是 c:\temp\Logs\FatalFile.txt
target 的 layout 為 Log 輸出的格式,如下:
2019-01-10 14:25:03.0966 | TRACE | 程式結束執行!
${longdate} 代表寫 Log 當下的時間
${level:uppercase=true} 代表 log level 並轉大寫
${message} ${newline} 代表 寫下 Log 內容並換行。
rules 內容如下:
logger name="*" levels="Trace, Debug, Info, Warn" writeTo="fatalFile"
writeTo 也就是指剛剛 target name
levels 是要記錄的 log level
target 內容如下:
target name="fatalFile" xsi:type="File"
fileName="${basedir}/Logs/FatalFile.txt"
layout="${longdate} | ${level:uppercase=true} | ${message} ${newline}"
target 的 fileName 為檔案名稱。
${basedir} 表示目前程式執行的目錄(暫訂為 c:\temp)
所以輸出的檔名會是 c:\temp\Logs\FatalFile.txt
target 的 layout 為 Log 輸出的格式,如下:
2019-01-10 14:25:03.0966 | TRACE | 程式結束執行!
${longdate} 代表寫 Log 當下的時間
${level:uppercase=true} 代表 log level 並轉大寫
${message} ${newline} 代表 寫下 Log 內容並換行。
rules 內容如下:
logger name="*" levels="Trace, Debug, Info, Warn" writeTo="fatalFile"
writeTo 也就是指剛剛 target name
levels 是要記錄的 log level
2019年2月12日 星期二
supervisor 開啟 Web 介面
輸入 sudo vi /etc/supervisor/supervisord.conf
進入 vi 程式並編輯 supervisord.conf 檔案
按下「I」鍵(-- INSERT --)
在檔案尾端,新增設定:
[inet_http_server] ; inet (TCP) server disabled by default
port=0.0.0.0:9001 ; (ip_address:port specifier, *:port for all iface)
username=user ; (default is no username (open server))
password=pass ; (default is no password (open server)):
輸入「:wq」寫入 supervisord.conf 並離開 vi 程式
重新啟動 supervisor
輸入 sudo supervisord -c /etc/supervisor/supervisord.conf
sudo supervisorctl reload
沒意外瀏覽 http://localhost:9001 就可以看到 Web 介面
2019年2月11日 星期一
透過 supervisord 執行 .NET Core 程式
利用 WinSCP 將自己開發的 .NET Core 程式上傳到 Ubuntu 上,
再透過 PuTTY 執行 .NET Core 程式,當 PuTTY 關閉後,
.NET Core 程式也會關閉。
所以我需要利用 supervisord 來管理 .NET Core 程式,
在 PuTTY 關閉後,也能正常運行。
在 Ubuntu 安裝 supervisord
先執行 sudo su 換 root 權限
apt-get update
apt-get install -y supervisor
安裝完,輸入 service supervisor status 看看是否安裝成功。
編輯 supervisor 設定檔
先執行 sudo su 換 root 權限
vim /etc/supervisor/supervisord.conf
進入 vim 修改 supervisord.conf 檔案
按下 i (-- INSERT --)
新增 supervisor 設定
[program:你的程式]
command=/usr/bin/dotnet /home/使用者/你的程式目錄/你的程式.dll
directory=/home/使用者/你的程式目錄/
user =root
autostart=true
autorestart=true
startsecs=3
stderr_logfile=/tmp/你的程式_err.log
stdout_logfile=/tmp/你的程式.log
environment=ASPNETCORE__ENVIRONMENT=Production
或直接指定路徑
command=/usr/share/dotnet/dotnet /home/你的程式目錄/你的程式.dll
PS. dotnet 安裝路徑可以用 dotnet --info 查到
輸入 :wq 存檔後,用指令重新啟動 supervisord
supervisorctl reload
輸入 service supervisor status 看看是否設定成功
用 supervisor 啟動你的程式
supervisorctl start 你的程式
或直接指定路徑
command=/usr/share/dotnet/dotnet /home/你的程式目錄/你的程式.dll
PS. dotnet 安裝路徑可以用 dotnet --info 查到
輸入 :wq 存檔後,用指令重新啟動 supervisord
supervisorctl reload
輸入 service supervisor status 看看是否設定成功
用 supervisor 啟動你的程式
supervisorctl start 你的程式
訂閱:
文章 (Atom)
Visual Studio 2017/2019 推薦的擴充功能與更新
參考文章: 覺得 Google 的 Blogger 不太順手?透過 HTML 的 iframe 移花接木 HackMD
-
把程式的捷徑放在下列目錄內: C:\Users\使用者帳號\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 每次開機便會自動開啟你的程式
-
當無法修復或解除安裝 Visual Studio 時, 可以透過 InstallCleanup.exe 工具來移除所有安裝的 Visual Studio。 InstallCleanup.exe 工具所在的目錄: C:\Program Files (x86)\Micros...





