如何获得T4模板以在每次构建时生成其输出?就像现在一样,它只在我对模板进行更改时才重新生成它.
我发现了类似的其他问题:
如何在Visual Studio中构建t4文件?(答案不够详细[虽然仍然很复杂]甚至没有完全意义)
必须有一个更简单的方法来做到这一点!
我正在使用T4为项目生成一些屏幕和中间层代码,并希望使用Linq来简化我的一些模板代码.但是,当我尝试使用Linq时,模板会报告语法错误.
我正在使用带有Entity Framework Power Tools Beta 2的Visual Studio的Entity Framework 5来反向设计中等大小的数据库(~100个表).
不幸的是,导航属性没有有意义的名称.例如,如果有两个表:
CREATE TABLE Contacts (
ContactID INT IDENTITY (1, 1) NOT NULL,
...
CONSTRAINT PK_Contacts PRIMARY KEY CLUSTERED (ContactID ASC)
}
CREATE TABLE Projects (
ProjectID INT IDENTITY (1, 1) NOT NULL,
TechnicalContactID INT NOT NULL,
SalesContactID INT NOT NULL,
...
CONSTRAINT PK_Projects PRIMARY KEY CLUSTERED (ProjectID ASC),
CONSTRAINT FK_Projects_TechnicalContact FOREIGN KEY (TechnicalContactID)
REFERENCES Contacts (ContactID),
CONSTRAINT FK_Projects_SalesContact FOREIGN KEY (SalesContactID)
REFERENCES Contacts (ContactID),
...
}
Run Code Online (Sandbox Code Playgroud)
这将生成如下类:
public class …
Run Code Online (Sandbox Code Playgroud) t4 entity-framework ef-code-first entity-framework-5 ef-power-tools
这看起来像是一个基本问题,但我无法找到答案的MSDN文章或StackOverflow问题:是否可以在T4模板中进行行注释或阻止注释?我不打算生成带注释的代码(这很容易和直接),而是注释掉我的T4标记块.那可能吗?
如何从t4模板中获取对visual studio项目或解决方案目录或t4模板目录的引用?
我有一个模板将一些文件连接在一起,这些文件位于相对于模板的位置.我需要通过相对手段获得对绝对位置的引用.硬编码绝对路径是不可接受的,因为visual studio项目并不总是在同一位置,这会破坏代码生成.从环境中读取当前工作目录也不起作用,因为它返回T4引擎所在的位置而不是模板.我刚刚进入t4,所以任何帮助都会受到赞赏.
为什么我的T4模板有时会在输出文件中附加一个数字,有时不会?例如,在一种情况下,我可能有一个名为的模板文件Foo.tt
,我将得到一个输出文件Foo.cs
.在其他情况下,我将获得一个输出文件Foo1.cs
.在每种情况下,都没有其他 Foo.cs
文件可能导致它附加一个数字.换句话说,它绝对不是任何明显的文件名冲突的结果.
我是一个深度肛门保持开发者,所以我很想知道如何摆脱那个无用的数字后缀.
在尝试这些教程时(T4教程:创建可重用的代码生成模板)我注意到虽然我使用普通的c#但我没有得到任何智能感知,可能是因为文件扩展名(.tt)
反正不是说Visual Studio将那些.tt文件视为.cs文件,从而获得正确的intellisense帮助吗?
嗨,我需要在我的T4模板文件的解决方案中添加现有项目的程序集.问题是我的T4模板位于名为Project.WebApi的项目中,我在T4模板中需要的类位于名为Project.Common.WebApi的项目中.
我试过像这样导入命名空间:
<#@ import namespace="Project.Common.WebApi.T4TemplateAttribute" #>
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
找不到类型或命名空间名称"Project"(您是否缺少using指令或程序集引用?)
我试过像这样添加程序集:
<#@ assembly name="Project.Common.WebApi" #>
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
编译转换:找不到元数据文件'Project.Common.WebApi'
我的项目包含T4Template(Project.WebApi),它引用了Project.Common.WebApi但是从我读到的内容来看,T4Template不使用项目中的引用.
我该如何解决这个问题?
通过基本的 T4模板,我的意思是不使用T4 Toolkit或任何加载项.
我的T4有点复杂,但我现在想保持自足.有没有办法在T4模板中有功能而不引用外部组件?
有没有办法告诉Visual Studio 2010为.tt文件启用语法高亮?我有一个指令来设置扩展名:
<#@ output extension=".ascx" #>
Run Code Online (Sandbox Code Playgroud)
所以我希望Visual Studio将文件视为ascx文件,以达到语法高亮显示的目的.