To insert the value of a property in the generated output from the template, use the same <%= and %> syntax that you used with calculated fields, but this time use the name of the property for CodeSmith to Generator to evaluate. Here's our final template:
Code Block | ||
---|---|---|
| ||
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="Create an AssemblyInfo.cs file." %> |
...
<%@ Property Name="Author" Type="System.String" Description="Lead author of the project." %> |
...
<%@ Property Name="Title" Type="System.String" Description="Title of the project." %> |
...
<%@ Property Name="Description" Type="System.String" Description="Description of the project." %> |
...
<%@ Property Name="Configuration" Type="System.String" Default="Debug" Description="Project configuration." %> |
...
<%@ Property Name="Company" Type="System.String" Default="MegaUtilities, Inc." %> |
...
<%@ Property Name="Product" Type="System.String" Description="Product Name." %> |
...
<%@ Property Name="Version" Type="System.String" Default="1.0.*" Description=".NET assembly version." %> |
...
<%@ Property Name="FileVersion" Type="System.String" Default="1.0" Description="Win32 file version." %> |
...
using System.Reflection; |
...
using System.Runtime.CompilerServices; |
...
// |
...
// Created: <%= DateTime.Now.ToLongDateString() %> |
...
// Author: |
...
<%= Author %> |
...
// |
...
[assembly: AssemblyTitle("<%= Title %>")] |
...
[assembly: AssemblyDescription("<%= Description %>")] |
...
[assembly: AssemblyConfiguration("<%= Configuration %>")] |
...
[assembly: AssemblyCompany("<%= Company %>")] |
...
[assembly: AssemblyProduct("<%= Product %>")] |
...
[assembly: AssemblyCopyright("Copyright (c) <%= DateTime.Now.Year.ToString() %> <%= Company %>")] |
...
[assembly: AssemblyCulture("")] |
...
[assembly: AssemblyVersion("<%= Version %>")] |
...
[assembly: AssemblyFileVersion("<%= FileVersion %>")] |
...
[assembly: AssemblyDelaySign(true)] |
Note that a single property (such as Company) can appear at multiple places in the template.
Info |
---|
You can download the above template by clicking here |
By now the template might look a good deal more complicated to you than the original file. But remember: you only have to write the template once. Then you just use it whenever you need a new file. The investment in time of adding property directives and other dynamic content will be repaid very quickly as you use the template.