====== 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.