Below you will find pages that utilize the taxonomy term “.NET”
Posts
Auto assign assembly's build/revision number
在做軟體開發時,總是會碰到遞增產品版號的需求,通常這種時候我們會撰寫 Script 在建置之前對 Assembly.vs 檔內的版本資訊進行修改,以達到像這樣的需求。
然而有些時後我們只是想要讓建置的版號跟前次建立的有所區隔,不一定要將版號遞增的話,其實不需要到撰寫 Script 這樣麻煩,只要透過 Visual Studio 內建的機制就可以做到了。
將 Assembly.vs 檔開啟,視需求將 AssemblyVersion 的 Build 或 Revision Number 部份用 * 替換。並將 AssemblyFileVersion 設定移除。
{% img /images/posts/AutoAssignAssemblyVersion/1.png %}
接著存檔建置,即會發現每次建置的版號會有所不同。
Build 的部份會是當前本地時間與 2000 年 1 月 1 日之間所差天數,Revision 部分為與本地午夜所差的秒數除以 2。
Link AssemblyVersionAttribute 建構函式 (System.Reflection) Auto-Incrementing Build Numbers in Visual Studio.NET c# - Can I automatically increment the file build version when using Visual Studio? - Stack Overflow
read morePosts
.NET - A Simple Finite State Machine Solution
想要用實現有限狀態機的功能,看了一下網路上的解決方案以及 State Pattern,覺得都不怎麼適用,因此利用 Tuple 與 Dictionary 去實作了一個簡易又可重複使用的 State Machine:
public sealed class StateMachine<TState, TCommand> { #region Fields Dictionary<Tuple<TState, TCommand>, TState> _transitions; #endregion Fields #region Properties /// <summary> /// Gets the m_ transitions. /// </summary> /// <value> /// The m_ transitions. /// </value> private Dictionary<Tuple<TState, TCommand>, TState> m_Transitions { get { return _transitions ?? (_transitions = new Dictionary<Tuple<TState, TCommand>, TState>()); } } /// <summary> /// Gets the state of the current. /// </summary> /// <value> /// The state of the current.
read more