我正在使用 VS 2010 (C#) T4 模板来生成代码。
我需要迭代项目中的所有类型,列出实体 poco 类并生成包装器。问题是,项目名称空间未被识别。
这是解决方案的结构:
namespace MySolution.Entities
{
public class Employee { ... }
public class Department { ... }
}
// Seperate project referenceing MySolution.Entities.
namespace MySolution.Database
{
public partial class Context { ... }
// Should generate Context.cs as a partial class with after iterating Syste.Types available in MySolution.Entities.
Context.tt
}
Run Code Online (Sandbox Code Playgroud)
这是文本模板:
<#@ template language="C#" #>
<#@ Output Extension=".cs" #>
namespace MySolution.Database
{
public partial class Context:
System.Data.Entity.DbContext
{
<#
System.Type [] types …Run Code Online (Sandbox Code Playgroud) 我已将我的t4模板放在CodeTemplate\MyTemplateFolder文件夹中,但无法从那里开始工作.
问题是我需要访问位于项目根目录中的名为models的文件夹.
即:
Project Root Folder\CodeTemplates\MyTemplateFolder\MyTemplate.tt
Run Code Online (Sandbox Code Playgroud)
我需要访问以下文件:
Project Root Folder\Models
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何使用我的模板this.Host.ResolvePath中的Models文件夹.
有什么建议?
用于:
var relativePathModelsFolder = @"..\..\Models";
var path = this.Host.ResolvePath(relativePathModelsFolder);
Run Code Online (Sandbox Code Playgroud)
给我一个根文件夹的绝对路径.... \模型卡在最后.
我似乎无法遍历到根目录,然后进入我的Models文件夹.
在 VS2015 版本的 TextTransform.exe 上下文中,错误代码 123 是什么意思?
它在开发人员命令提示符中使用相同的命令运行良好,但在预构建脚本中失败(在 VS2013 中运行良好)。
不幸的是,错误代码没有给我任何东西。
"%CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\14.0\texttransform.exe" -out "C:\[REMOVEDPATH]\Generated\Content.cs" -P "%PROGRAMFILES(x86)%\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1" "C:\[REMOVEDPATH]\Generated\Content.tt"
Run Code Online (Sandbox Code Playgroud)
唯一需要注意的一点是 VS2015 以管理员身份运行,特别是因为目标路径在没有管理员访问权限的情况下不可写。
我想以Subject.cs编程方式创建文件。为此,当我在互联网上搜索时,我看到可以使用T4文本模板。现在,我想使用 Json.NET 从 JSON 文件获取数据并将Root值设置为属性,如下所示:
namespace Library
{
class Subject
{
public static int forensic_medicine { get; set; }
public static int family_law { get; set; }
public static int constitutional_law { get; set; }
public static int obligations_law { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
以下是 JSON 文件内容:
{
"Subjects": [
{
"Root": "forensic_medicine",
"Name": "Forensic Medicine",
"StrID": "FMD",
"RowID": 746
},
{
"Root": "family_law",
"Name": "Family Law",
"StrID": "FML",
"RowID": 1239
},
{
"Root": "constitutional_law", …Run Code Online (Sandbox Code Playgroud) T4 template使用来执行的 API/语法是什么Cake build?任何示例代码都会有所帮助。
是否应使用StartProcess API 来调用texttransform.exe或是否有任何其他可用的 API。
它应该解析EDMX文件并创建一个moch/fake用于单元测试.最简单的集成是使用我们在VS IDE中已经拥有的T4.
有人在网上看过吗?
或者也许是自己写的?
或者OSS正在进行中吗?
任何人?
错误说
我在C:\ Users \\ AppData\Local\assembly\dl3\4WT9GZ6E.WD1\0CNLWRJ6.ODR\3f01d2db\26ba7213_ebf0cb01中缺少ActiproSoftware.CSharpHostLanguage.xml,并在打开.tt或.ttinclude文件时崩溃.
我有visual studio 2010 sp1和windows 7 sp1 x86(32bit).
有形T4编辑器是v1.950.
欢迎任何建议.谢谢.
更新:最新版本1.962修复此问题.
t4 visual-studio-2010 windows-7 visual-studio-2010-sp1 tangible-t4-editor
我有vs2010,从nuget安装了Entity Framework 4.3.1,从Microsoft安装了EF 4.x DbContext Generator。我创建一个项目,然后尝试添加新的EF 4.x DbContext Generator项目,但出现以下错误。有谁知道如何解决这个问题?
错误1运行转换:System.Reflection.TargetInvocationException:调用的目标引发了异常。---> System.IO.FileNotFoundException:无法在Microsoft.VisualStudio.TextTemplating.VSHost.TextTemplatingService.ResolvePath(String path)上的Microsoft.VisualStudio.TextTemplating.VSHost.TextTemplatingService.ResolvePath(String path)上找到文件---结束内部异常堆栈跟踪--在System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo方法,对象目标,Object []中的System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo方法,对象目标,Object []参数,SignatureStruct&sig,MethodAttributes方法属性,RuntimeType类型所有者) ]参数,签名sig,MethodAttributes,methodAttributes,
在Microsoft.VisualStudio.TextTemplatingE78BCB29E8D7A2F9432A449161229C3F.GeneratedTextTransformation.DynamicHost.ResolvePath(字符串路径)在Microsoft.VisualStudio.TextTemplatingE78BCB29E8D7A2F9432A449161229C3F.GeneratedTextTransformation.MetadataLoader.TryCreateEdmItemCollection(字符串SOURCEPATH,字符串[] referenceSchemas,EdmItemCollection&edmItemCollection)在Microsoft.VisualStudio.TextTemplatingE78BCB29E8D7A2F9432A449161229C3F.GeneratedTextTransformation.MetadataLoader .Microsoft.VisualStudio.TextStudio3229F2E23BC.291TMicrosoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation上的GeneratedTextTransformation.TransformText()(TemplateProcessingSession会话,字符串源,ITextTemplatingEngineHost主机,字符串和结果)1 1
我试图使用T4 Text Templating生成代码,但在运行脚本时,我收到以下错误:
Running transformation: System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.VisualStudio.TextTemplatingB0A58A4C85EA3D7032675015C6052C89.GeneratedTextTransformation.TransformText() at Microsoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation(TemplateProcessingSession session, String source, ITextTemplatingEngineHost host, String& result)
由于我不熟悉T4,我不确定在哪里寻找解决此问题的方法.
您是否可以为模型创建自定义数据注释,可以在T4模板中读取类似于View的属性.是否读取了文件夹?我想添加数据注释参数,比如我将构建视图的Scaffold.
谢谢
t4 ×10
c# ×3
.net ×2
asp.net-mvc ×1
cakebuild ×1
json ×1
json.net ×1
mocking ×1
unit-testing ×1
windows-7 ×1