「工具」 「擴充功能與更新」
安裝「T4Executer 」後 T4 的關鍵字都會有對應的顏色標示
安裝 「Devart T4 Editor」可以設定編譯前先執行 T4 範本
設定編譯前執行 T4 (圖為執行狀態)
設定畫面
新建文字檔 附檔名為 *.tt
就會出現「轉換所有 T4 範本」
點擊就會執行 T4 範本
首先註解 AssemblyInfo.cs 裡面的
[assembly: AssemblyFileVersion("0.0.0.0")]
與
[assembly: AssemblyTitle("ConsoleApp")]
下面的 SharedInfo.tt 檔案(T4 範例)
會自動產生一個 SharedInfo.cs
並自動填入
[assembly: AssemblyFileVersion("0.0.0.0")]
與
[assembly: AssemblyTitle("ConsoleApp")]
的內容
<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ import namespace="System.IO" #>
<#@ assembly name="$(SolutionDir)\CommitID\bin\Debug\netstandard2.0\MyLibrary.Git.dll" #>
<#@ import namespace="MyLibrary.Git" #>
<#@ assembly name="C:\Program Files\dotnet\sdk\2.1.700-preview-009597\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\netstandard.dll" #>
<#@ output extension=".cs" #>
<#
int major = 0;
int minor = 0;
int build = 0;
int revision = 0;
try
{
using(var f = File.OpenText(Host.ResolvePath("SharedInfo.cs")))
{
// 取值做 +1 使用
//string maj = f.ReadLine().Replace("//","");
//string min = f.ReadLine().Replace("//","");
//string b = f.ReadLine().Replace("//","");
//string r = f.ReadLine().Replace("//","");
// 轉成日期
string maj = DateTime.Now.Year.ToString();
string min = DateTime.Now.Month.ToString();
string b = DateTime.Now.Day.ToString();
string r = DateTime.Now.Minute.ToString() + "0" + DateTime.Now.Second.ToString();
major = int.Parse(maj);
minor = int.Parse(min);
build = int.Parse(b);
revision = int.Parse(r) + 1;
}
}
catch
{
major = 1;
minor = 0;
build = 0;
revision = 255;
}
// 呼叫自己個函式庫
CommitID.GetCommitID();
string gitver = CommitID.ID;
#>
//<#= major #>
//<#= minor #>
//<#= build #>
//<#= revision #>
//<#= gitver #>
//
// This code was generated by a tool. Any changes made manually will be lost
// the next time this code is regenerated.
//
using System.Reflection;
[assembly: AssemblyFileVersion("<#= major #>.<#= minor #>.<#= build #>.<#= revision #>")]
[assembly: AssemblyTitle("<#= gitver #>")]
MyLibrary.Git 是我寫的 .NET Standard Library
透過
<#@ assembly name="$(SolutionDir)\CommitID\bin\Debug\netstandard2.0\MyLibrary.Git.dll" #>
<#@ import namespace="MyLibrary.Git" #>
使用 .NET Standard Library 還要加入 .NET Standard 的 dll
<#@ assembly name="C:\Program Files\dotnet\sdk\2.1.700-preview-009597\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\netstandard.dll" #>
不然編譯會有錯誤訊息:
錯誤 正在編譯轉換: 類型 'Object' 定義在未參考的組件中。您必須加入組件 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 的參考。
請依據自己的 dotnet 版本選擇目錄,例如:我的是 net461