====== Vorlage mit TT-Compile für AssemblyInfo ======
Visual Studio Version 2017 Community Edition.
- Kopiert die Assembly-Information erst einmal in eine Textdatei, damit ihr dann nicht so viel Arbeit habt.
- Nun löscht Ihr die **AssemblyInfo.cs** aus dem **//Properties//** Ordner.
- Nun wird dem Projekt ein "Neues Element" hinzugefügt, unter **//Properties//**.
- Wählt Textdatei aus - und gebt der Textdatei den Namen **AssemblyInfo.tt**
- Visual Studio sollte euch dann evtl. eine Warnung ausgeben, wenn erkannt wurde, dass es sich um ein Template handelt.
- Es sollte für diese Datei auch ein "Benutzerdefiniertes Tool" hinterlegt worden sein: **TextTemplatingFileGenerator**
- Und hier mein Code im Template, nicht wundern, die Versionsnummer wird bei mir anders gesetzt, siehe [[windows:visual_studio:global_version_number]]
<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ output extension=".cs" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Text.RegularExpressions" #>
<#
string output = File.ReadAllText(this.Host.ResolvePath("AssemblyInfo.cs"));
Regex pattern = new Regex("AssemblyVersion\\(\"(?\\d+)\\.(?\\d+)\\.(?\\d+)\\.(?\\d+)\"\\)");
MatchCollection matches = pattern.Matches(output);
if( matches.Count == 1 )
{
major = Convert.ToInt32(matches[0].Groups["major"].Value);
minor = Convert.ToInt32(matches[0].Groups["minor"].Value);
build = Convert.ToInt32(matches[0].Groups["build"].Value) + 1;
revision = Convert.ToInt32(matches[0].Groups["revision"].Value);
if( this.Host.ResolveParameterValue("-","-","BuildConfiguration") == "Release" )
revision++;
}
if( startYear != nowYear ){
appendYear = " - " + nowYear.ToString();
}
#>
// $Id$
// $URL$
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Resources;
// General Information
[assembly: AssemblyTitle("FormApp-TEST")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("IT Raboese")]
[assembly: AssemblyProduct("FormApp-Test")]
[assembly: AssemblyCopyright("Copyright © IT Raboese <#= this.startYear #><#= this.appendYear #>")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
<#+
int major = 1;
int minor = 0;
int revision = 0;
int build = 0;
int startYear = 2011;
int nowYear = DateTime.Now.Year;
string appendYear = "";
#>
Im PreBuild-Event für das Projekt - muss noch diese Zeile eingefügt werden
"c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\TextTransform.exe" "$(ProjectDir)Properties\AssemblyInfo.tt"
:!: :!: Der Compile dauert dadurch aber ein wenig länger.