t4-editor使用方法 Visual T4
原文发布时间为:2011-05-17 —— 来源于本人的百度文章 [由搬家工具导入]
http://visualstudiogallery.msdn.microsoft.com/40a887aa-f3be-40ec-a85d-37044b239591
可以这里下载,也可以在 vs的 工具——扩展管理器 里面搜索 安装即可。
引入一些常用的命名空间并使用的方法如下:
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".txt" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Xml" #>
<#@ assembly name="System.Xml.Linq" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Xml.Linq" #>
<#
var a = "sdfsdf".Select(it => it);
foreach (var b in a)
{
#>
<#= b #>
<#
}
#>
载入自定义dll,如
<#@ Assembly Name="E:\CodeTest\TestT4\My\bin\Debug\My.dll" #>
<#@ Import Namespace="My" #>
一个模板生成多个文件,范例(详见:http://www.olegsych.com/2008/03/how-to-generate-multiple-outputs-from-single-t4-template/)
<#@ template debug="False" hostspecific="True" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Xml" #>
<#@ assembly name="System.Xml.Linq" #>
<#@ assembly name="System.Web" #>
<#@ Assembly Name="System.Web.Mvc" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Xml.Linq" #>
<#
HelloWorld(12);
SaveOutput("test1.txt");
HelloWorld(13);
SaveOutput("test2.txt");
HelloWorld(14);
SaveOutput("test3.txt");
#>
<#+
void HelloWorld(int i)
{
Write("Hello World" + i);
#>
This is file <#= i #>
<#+
}
#>
<#+
void SaveOutput(string outputFileName)
{
string templateDirectory = Path.GetDirectoryName(Host.TemplateFile);
string outputFilePath = Path.Combine(templateDirectory, outputFileName);
File.WriteAllText(outputFilePath, this.GenerationEnvironment.ToString());
this.GenerationEnvironment.Remove(0, this.GenerationEnvironment.Length);
}
#>
http://www.olegsych.com/2008/03/how-to-generate-multiple-outputs-from-single-t4-template/
中文MSDN这里:http://msdn.microsoft.com/zh-cn/library/dd820620
Tutorials:Creating your first code generatorTroubleshooting code generation errorsDebugging code generation filesCreating reusable code generation templatesCreating complex code generatorsReusing code generators on multiple projects
Here's some of the links from Oleg's blog.
How to create a simple T4 templateHow to use T4 to generate .config filesHow to use T4 to generate Decorator classesHow to use T4 to generate CRUD stored proceduresHow to use T4 to generate strongly-typed navigation class in ASP.NET (by Kirill Chilingarashvili) How to use T4 to generate strongly-typed AzMan wrapperHow to generate multiple outputs from single T4 templateT4 template for generating ADO.NET Entity Framework Stored Procedures (by David DeWinter) T4 script for generating ADO.NET Entity Framework Views (by ADO.NET team) T4 template for generating LINQ to SQL Data Context (by Damien Guard) T4 template for generating WiX source files (by New Age Solutions) T4 template for generating SQL view from C# enumerationMSBuild task for transforming T4 templates (by Elton Stoneman) T4 template for generating state machines in C# (by Andrew Matthews)
Oleg also has a CodePlex project called T4 Toolbox that is a library of T4 templates that get added to File | New Item.
Also, check out Damien Guard's T4 templates that are a wholesale replacement of code that LINQ to SQL generates.
===其他的学习,可以到这个hanselman的博客。
t4-editor使用方法 Visual T4的更多相关文章
- tangible T4 Editor 2.2.3 for VS2010 / VS2012 / VS2013 Preview
tangible T4 Editor 2.2.3 for VS2010 / VS2012 / VS2013 Preview angible T4 Editor 2.2.3 plus UML model ...
- tangible T4 Editor 2.2.3 plus modeling tools for VS 2012 扩展名
tangible T4 Editor 2.2.3 plus modeling tools for VS 2012 扩展名 tangible T4 Editor 2.2.3 plus modeling ...
- Cannot+use+T4+templates+inside+a+.NET+Core+project,NetCore2.0无法使用T4模板解决方法
Cannot+use+T4+templates+inside+a+.NET+Core+project,NetCore2.0无法使用T4模板解决方法 请见:https://csharp.wekeepco ...
- ef code first transform,add ef power tools add-in,add tangible t4 editor for enhancement.
use ef power tools, as to .edmx file,right click at view, choose generate database from model, then ...
- 查看html元素绑定的事件与方法 visual Event 插件
WEB标准提倡结构.表现和行为相 分离,现在越来越多采用这种表现和行为的方式,但它也为我们开发调试带来一些问题,网页载入一堆JavaScript,,我们很难搞清楚最后在哪些元素的哪个动作绑定了事件,尤 ...
- easyui datagrid 动态操作editor 的方法
easyui本身是不提供这么细节的功能的,需要我们自己拓展下: 在easyui.min.js中扩展: $.extend($.fn.datagrid.methods, { addEditor : fun ...
- Visual Studio 2013中引入Web Service的简单方法visual studio 引用 wsdl
http://blog.csdn.net/wangzhongbo_24/article/details/49954191 Web Service有三种表示方式 三种方式分别为WSDL.Endpoint ...
- 编写C语言的两种方法----Visual Studio/CodeBlocks
1.CodeBlock(安装简单) 参考这个博客的:https://blog.csdn.net/jjjjkkjkk/article/details/80331625?utm_medium=distri ...
- T4模板
T4,即4个T开头的英文字母组合:Text Template Transformation Toolkit. T4文本模板,即一种自定义规则的代码生成器.根据业务模型可生成任何形式的文本文件或供程序调 ...
随机推荐
- Python_深浅拷贝
深浅拷贝 ‘copy’和'='的区别:copy会开辟一个新的空间,而‘=’不会. 浅copy只会copy第一层,再里边的就进行共享了. 需要记住的是copy之后记住的是内存寻址地址,而浅copy时如果 ...
- 判断IP连接数前五,并自动加入防火墙
#!/bin/bash #Author Template #Time -- : log_file=/tmp/tmp.log JudgeExt(){ if expr "$1" : & ...
- 卸载Redhat 7自带的yum,安装并使用网易163源
由于redhat的yum在线更新是收费的,如果没有注册的话不能使用,如果要使用,需将redhat的yum卸载后,安装CentOS yum工具,再配置其他源,以下为详细过程:删除redhat原有的yum ...
- node.js express环境下中文需要注意的地方
问题一: 最近在nuxt项目中开始着手把一些跨域的请求转移到express里,其实跟其他语言差不多,http对象发请求,接收请求都写得很顺畅.之前用的请求部分大多数是get请求,所以除了注意编码问题之 ...
- JZOJ 4735. 最小圈
Description 对于一张有向图,要你求图中最小圈的平均值最小是多少,即若一个圈经过k个节点,那么一个圈的平均值为圈上k条边权的和除以k,现要求其中的最小值 Input 第一行2个正整数,分别为 ...
- 20190103(GIL,池,阻塞,同步异步)
GIL锁 什么是GIL GIL全局解释器锁,是防止多个线程在同一时间同时执行的.CPython解释器特有的一种互斥锁. 每一个py文件都会有自己的解释器,也就是说不同py文件的GIL都是独立的, ps ...
- A1083 List Grades (25)(25 分)
A1083 List Grades (25)(25 分) Given a list of N student records with name, ID and grade. You are supp ...
- A1082 Read Number in Chinese (25)(25 分)
A1082 Read Number in Chinese (25)(25 分) Given an integer with no more than 9 digits, you are suppose ...
- Codeforces Round #456 (Div. 2) A. Tricky Alchemy
传送门:http://codeforces.com/contest/912/problem/A A. Tricky Alchemy time limit per test1 second memory ...
- 动态规划:HDU1087-Super Jumping! Jumping! Jumping!(最大上升子序列和)
Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...