2018年8月13日 星期一

C# 上引用 Script Language 效能比較

使用了 nuget 的
MoonSharp(LUA)
CS-Script.Core(CS)

速度 func 最快
func > lua > cs

下面順序都是 func、lua、cs

執行總時間比(func = 0.0022)
1 : 87.2 : 1369.7
結論:
#不意外,cs 最慢。

初始化時間比(func = 0.0014)
1 : 132.1 : 2134
結論:
#cs 初始化超級慢,拖累執行效率。

執行時間比(func = 0.0008)
1 : 6.8 : 1.9
結論:
#意外的是,lua 竟然比 cs 慢,推測是 lua 反射查詢的機制比較複雜,拖累 lua 執行效率。

2018年8月7日 星期二

Visual Studio 2017 好看的程式碼的字型

工具 -> 選項 -> 環境 -> 字型與色彩






















選擇字型 Consolas 大小選 14
這樣就可以看到清晰與放大的程式碼了!

Visual Studio 2017 / 2019 擴充功能與更新 Viasfora 工具介紹

工具 → 擴充功能與更新































選擇「線上」搜尋「Viasfora」並安裝
























原本「程式碼」如下:

安裝後,「程式碼」如下:






















「程式碼」視窗從此不再是單調了!

Visual Studio 2019 擴充功能與更新 VSColorOutput 工具 && Visual Studio 2017 擴充功能與更新 Output enhancer 工具介紹

工具 -> 擴充功能與更新































選擇「線上」搜尋「VSColorOutput」並安裝

原本「輸出」如下:

安裝後,「輸出」如下:













這下可以讓單調的「輸出」視窗製造一些彩色了!

「輸出」視窗最下面的訊息可以關掉

工具 -> 選項 -> VSColorOutput 改 Yes, I Donated! 為 True






















就能關閉「輸出」視窗的廣告訊息了

目前 VSColorOutput 在 Visual Studio 2017 已經停止更新了

現在正在試用 Output enhancer 中
下面是 Output enhancer 的使用畫面截圖




































2018年7月21日 星期六

依據組態 Debug 或 Release 設定 App.config

 安裝「擴充功能與更新」的 「 Configuration Transform」
























在 「App.config」 按下右鍵,選取「Add Config Transforms」




































會依據組態產生 App.config







App.config 新增一組 appSettings
<appSettings>
      <add key="VER" value=""/>
</appSettings>

App.Debug.config 新增一組 appSettings

<appSettings>
      <add key="VER" value="DEBUG" xdt:Locator="Match(key)" xdt:Transform="Replace" />
</appSettings>

App.Release.config 新增一組 appSettings

<appSettings>
      <add key="VER" value="RELEASE" xdt:Locator="Match(key)" xdt:Transform="Replace" />
</appSettings>

VER 就會依據對應的組態設定 value 的值

PS.後面加了兩個設定:

Locator 限制條件,透過設定 Match(key) 來要求置換目標的 key 值必須相同才會執行轉換
Transform 轉換方法,透過設定 Replace 來將置換目標的 value 值換成來源值

2018年7月17日 星期二

讀取 App.config 中的內容

在 App.config 中新增一筆資料

<appSettings>
  <add key="KEY" value="VALUE"/>
</appSettings>

將「System.Configuration」加入參考
加入:using System.Configuration;

利用下列程式碼,就能取出 App.config 中的內容
string Value_ = ConfigurationManager.AppSettings["KEY"];
執行後,Value_ 的值將會是 VALUE

2018年7月3日 星期二

讓 Visual Studio Code 可以開啟 sln 檔案

安裝擴充功能 vscode-solution-explorer
資料來源參考網址: https://github.com/fernandoescolar/vscode-solution-explorer https://hackmd.io/@chiisen/rkvLrbX2p

2018年6月4日 星期一

2018年5月7日 星期一

DI—Dependency Injection 依賴注入 超超簡單說明

 一般是用來解決「耦合性(相依)過高」的問題
通常都會搭配介面 interface 進行注入
讓程式保留彈性
便於在新的需求發生時
能便於抽換
下面我舉個例子




    /// 
    /// Logger 的介面
    /// 
    public interface ILogger
    {
        void Print(string msg, Color color);
    }

    /// 
    /// 預設的 Console Logger
    /// 
    public class ConsoleLogger : ILogger
    {
        public void Print(string msg, Color color)
        {
            System.Console.WriteLine(msg);
        }
    }


這種繼承同一介面 interface 的手法,就叫做注入 這種手法可以簡單的利用繼承同一介面 實做自己須要的程式內容 一般都會透過 DI Container 集中註冊方式 統一管理所有DI元件 例如:Autofac 想瞭解 Autofac 可以到看看這個網頁:超簡單一分鐘學會 DI 框架 AutoFac

超簡單一分鐘學會 DI 框架 AutoFac

DI—Dependency Injection 依賴注入

安裝 AutoFac 的 NuGet 套件


static void Main(string[] args)
{
    // 註冊繼承 interface 的子類別
    var builder_ = new ContainerBuilder();
    builder_.RegisterType<Mylogger>().As<Ilogger>();
                         
    // 取得繼承 interface 的子類別
    var container_ = builder_.Build();
    var logger = container_.Resolve<Ilogger>();
}


整理一下,簡單的說:

1. ContainerBuilder.Register 註冊繼承 interface 的子類別
 2. Container.Resolve 取得繼承 interface 的子類別 

AutoFac 功能非常強大,上面程式碼只是入門

Visual Studio 2017/2019 推薦的擴充功能與更新

參考文章: 覺得 Google 的 Blogger 不太順手?透過 HTML 的 iframe 移花接木 HackMD