<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.skysigal.com/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://www.skysigal.com/feed.php">
        <title>Notes it:ad:t4:howto</title>
        <description></description>
        <link>https://www.skysigal.com/</link>
        <image rdf:resource="https://www.skysigal.com/lib/tpl/bootstrap3/images/favicon.ico" />
       <dc:date>2026-06-28T05:20:50+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://www.skysigal.com/it/ad/t4/howto/create_a_code_file?rev=1699063194&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.skysigal.com/it/ad/t4/howto/create_a_db_script?rev=1699063194&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.skysigal.com/it/ad/t4/howto/create_a_multi_target_transformation?rev=1699139010&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.skysigal.com/it/ad/t4/howto/create_a_transformation?rev=1699139010&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.skysigal.com/it/ad/t4/howto/determine_the_namespace?rev=1699063195&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.skysigal.com/it/ad/t4/howto/home?rev=1699139011&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.skysigal.com/it/ad/t4/howto/import_data_from_an_excel_file?rev=1699063195&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.skysigal.com/it/ad/t4/howto/regenerate_the_output?rev=1699063197&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.skysigal.com/it/ad/t4/howto/resolve_the_path_to_project_files?rev=1699063198&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.skysigal.com/it/ad/t4/howto/work_with_texttransform.exe?rev=1699063199&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://www.skysigal.com/lib/tpl/bootstrap3/images/favicon.ico">
        <title>Notes</title>
        <link>https://www.skysigal.com/</link>
        <url>https://www.skysigal.com/lib/tpl/bootstrap3/images/favicon.ico</url>
    </image>
    <item rdf:about="https://www.skysigal.com/it/ad/t4/howto/create_a_code_file?rev=1699063194&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T01:59:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Transformations:T4:HowTo:Create a Code File</title>
        <link>https://www.skysigal.com/it/ad/t4/howto/create_a_code_file?rev=1699063194&amp;do=diff</link>
        <description>IT:AD:Transformations:T4:HowTo:Create a Code File

	* (UP)
howto index



Process

After starting a new page

Includes

Use IT:AD:Transformations:T4:Syntax:Directives to include what you need:
&lt;#@ include file=”T4Toolbox.tt” #&gt;
C# Namespaces

Use IT:AD:Transformations:T4:Syntax:CodeBlocks Create the namespace:
namespace &lt;#=codeGenerationTools.EscapeNamespace(namespaceName)#&gt;
{
//Code goes here:
}</description>
    </item>
    <item rdf:about="https://www.skysigal.com/it/ad/t4/howto/create_a_db_script?rev=1699063194&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T01:59:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Transformations:T4:HowTo:Create a Db Script</title>
        <link>https://www.skysigal.com/it/ad/t4/howto/create_a_db_script?rev=1699063194&amp;do=diff</link>
        <description>IT:AD:Transformations:T4:HowTo:Create a Db Script

	* (UP)
howto index



Resources

	* http://www.olegsych.com/2008/09/t4-tutorial-creatating-your-first-code-generator/</description>
    </item>
    <item rdf:about="https://www.skysigal.com/it/ad/t4/howto/create_a_multi_target_transformation?rev=1699139010&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T23:03:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Transformations:T4:HowTo:Create a Multi Target Transformation</title>
        <link>https://www.skysigal.com/it/ad/t4/howto/create_a_multi_target_transformation?rev=1699139010&amp;do=diff</link>
        <description>IT:AD:Transformations:T4:HowTo:Create a Multi Target Transformation

	* (UP)
howto index



Just because the default behaviour is to transform a .tt to one ouput file, it doesn&#039;t mean you can&#039;t produce *n files from one single transformation.
&lt;#@ template language=&quot;C#&quot; debug=&quot;false&quot; hostspecific=&quot;true&quot;#&gt;
&lt;#@ include file=&quot;EF.Utility.CS.ttinclude&quot;#&gt;
&lt;#@ include file=&quot;Manager.ttinclude&quot;#&gt;
&lt;#@ output extension=&quot;.xx&quot;#&gt; 

&lt;#
EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFile…</description>
    </item>
    <item rdf:about="https://www.skysigal.com/it/ad/t4/howto/create_a_transformation?rev=1699139010&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T23:03:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Transformations:T4:HowTo:Create a Transformation</title>
        <link>https://www.skysigal.com/it/ad/t4/howto/create_a_transformation?rev=1699139010&amp;do=diff</link>
        <description>IT:AD:Transformations:T4:HowTo:Create a Transformation

	* (UP)
howto index



Single File Transformation

If you write my.tt and stick an output directive on it, with an &#039;.xx&#039; extension attribute:
//This File is just a place holder.
&lt;#@ template language=&quot;C#&quot; debug=&quot;false&quot; hostspecific=&quot;true&quot;#&gt;
&lt;#@ include file=&quot;EF.Utility.CS.ttinclude&quot;#&gt;
&lt;#@ output extension=&quot;.xx&quot;#&gt;</description>
    </item>
    <item rdf:about="https://www.skysigal.com/it/ad/t4/howto/determine_the_namespace?rev=1699063195&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T01:59:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:T4:HowTo:Determine the namespace</title>
        <link>https://www.skysigal.com/it/ad/t4/howto/determine_the_namespace?rev=1699063195&amp;do=diff</link>
        <description>IT:AD:T4:HowTo:Determine the namespace

	* (UP)
howto index



Summary

When generating C# files you want the output file to be in a namespace relative to the Project&#039;s Default Namespace, plus the location of the file.

Process

&lt;div warning&gt;

	* &lt;http://lennybacon.com/post/2010/12/10/generatingcodefileswithcorrectnamespacesusingt4&gt;</description>
    </item>
    <item rdf:about="https://www.skysigal.com/it/ad/t4/howto/home?rev=1699139011&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T23:03:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Transformations:T4:HowTo</title>
        <link>https://www.skysigal.com/it/ad/t4/howto/home?rev=1699139011&amp;do=diff</link>
        <description>IT:AD:Transformations:T4:HowTo

	* (UP)
howto index</description>
    </item>
    <item rdf:about="https://www.skysigal.com/it/ad/t4/howto/import_data_from_an_excel_file?rev=1699063195&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T01:59:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:T4:HowTo:Import Data From an Excel File</title>
        <link>https://www.skysigal.com/it/ad/t4/howto/import_data_from_an_excel_file?rev=1699063195&amp;do=diff</link>
        <description>IT:AD:T4:HowTo:Import Data From an Excel File

	* (UP)
howto index



Excel&#039;s are the files of preference of BAs on a project, so it makes sense to let them populate them with Resources, MessageCodes, etc. -- and use T4 to import them.

Process

	* Use Nuget to add LinqToExcel to your project.</description>
    </item>
    <item rdf:about="https://www.skysigal.com/it/ad/t4/howto/regenerate_the_output?rev=1699063197&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T01:59:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:T4:HowTo:Regenerate the Output</title>
        <link>https://www.skysigal.com/it/ad/t4/howto/regenerate_the_output?rev=1699063197&amp;do=diff</link>
        <description>IT:AD:T4:HowTo:Regenerate the Output

	* (UP)
howto index



T4 regenerates the output every time the input changes.

But sometimes you just want to regenerate it anyway (maybe to check something).

Process

	* Right-click on the T4 file
	* Select “Run Custom Tool”</description>
    </item>
    <item rdf:about="https://www.skysigal.com/it/ad/t4/howto/resolve_the_path_to_project_files?rev=1699063198&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T01:59:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:T4:HowTo:Resolve the Path to Project Files</title>
        <link>https://www.skysigal.com/it/ad/t4/howto/resolve_the_path_to_project_files?rev=1699063198&amp;do=diff</link>
        <description>IT:AD:T4:HowTo:Resolve the Path to Project Files

	* (UP)
howto index



A common use for T4 is referencing a source xml or Excel file in the project.

Process

The t4 has to have a template directive, with hostspecific set to true:



Then you can refer to a file in the app:</description>
    </item>
    <item rdf:about="https://www.skysigal.com/it/ad/t4/howto/work_with_texttransform.exe?rev=1699063199&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T01:59:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:T4:HowTo:Work with TextTransform.exe</title>
        <link>https://www.skysigal.com/it/ad/t4/howto/work_with_texttransform.exe?rev=1699063199&amp;do=diff</link>
        <description>IT:AD:T4:HowTo:Work with TextTransform.exe

	* (UP)
howto index



Notes

	* &lt;http://stackoverflow.com/questions/3336678/where-is-texttransform-exe-located-on-hard-drive?rq=1&gt;</description>
    </item>
</rdf:RDF>
