我只是好奇是否已经存在任何匹配/类似于开箱即用的Web表单视图模板(创建,编辑,详细信息等)的Spark T4模板.我的Google技能并没有让我得到任何结果.
我已经覆盖了控制器一代T4模板(ControllerWithContext.tt
)所描述的在这里.
我想利用EF.utility.CS.ttinclude
POCO模型生成器T4模板中使用的代码帮助程序实用程序.因此我将以下几行复制Model.tt
到我的ControllerWithContext.tt
.
<#@ include file="EF.Utility.CS.ttinclude"#>
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试添加控制器时,我收到错误消息
加载包含文件'EF.utility.CS.ttinclude'返回null或空字符串
根据MSDN文档,此错误是因为包含的文件是空白的,显然不是因为它可以使用Model.tt
我能看到的唯一区别是被覆盖的ControllerWithContext.tt
没有定义自定义工具,而Model.tt
它被设置为TextTemplatingFileGenerator
.
我的解决方法是将我需要的功能复制ef.utility.cs.ttinclude
到my中ControllerWithContext.tt
,这本身就会产生更多错误,但很容易解决.
如何在未定义自定义工具的情况下包含T4模板?
我在Windows 7上使用VisualStudio Ultimate 2012(Update 1).我可以通过以下方式获取我的T4模板生成文件:
右键单击[tt file] | 运行自定义工具.这很棒!(对我而言).如果我运行菜单命令,它也可以工作:Build | 转换所有T4模板.但我想要自动化!当我尝试使用每个构建生成生成的代码文件时遇到问题 - 这是我的目标.
我看了一下:
Visual Studio中的T4转换和构建顺序
这不是我想要的.它讨论了使用预构建构建事件.我希望它成为构建的一部分.
并且: 有没有办法让Visual Studio在成功构建时运行"转换所有模板"?
这不是我想要的.它讨论了使用后期构建事件.
然后我发现了这个: 了解T4:MSBuild集成
来自Oleg Sych的博客:
完善!这就是我要的.虽然他的博客讨论了VS2010,但我已将其应用于VS2012(如适用).
为了实现这一点,我完成了他的每个步骤.我安装了Visual Studio SDK 2012 和Visual Studio Visualization and Modeling SDK(2012)
我开始使用Tangible T4插件,但认为有问题,我使用了Oleg的T4 Toolbox Beta.可悲的是,我似乎得到了相同的结果:构建错误.
我按照他在网站上的指示重新阅读了所有步骤和部分.我已经研究了几天,现在是我的第一篇文章.我被卡住了.谢谢你的期待......
回顾一下:当我在visual studio 2012中构建或者从命令行运行msbuild时出现错误(但是当我运行自定义工具或使用手动转换所有T4模板时 - 我们两个都工作正常).
这是我的t4模板s_code.tt
:
<#@ template debug="true" hostSpecific="true" language="C#" #>
<#@ output extension=".js" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Xml" #>
<#@ assembly name="EnvDTE" …
Run Code Online (Sandbox Code Playgroud) 当我向ASP.NET MVC项目添加新的强类型视图时,我可以在不同的视图内容模板之间进行选择(创建详细信息,编辑,列表).我读过这些是基于Visual Studio T4代码生成引擎的模板.
如何创建和配置自己的模板,并在添加新视图时将它们显示在可用模板中?
如果我有.tt模板,我可以使用entity.Name来写出实体的名称,例如:
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{;
WriteLine(entity.Name);
}
Run Code Online (Sandbox Code Playgroud)
使用正常转换或T4,如何写出实体集的实际名称?(例如,对于Person,它可能是人物 - 但也许我将其更改为设计师中的People,所以我想要那样做).
谢谢!
理查德
我有一个.tt脚本需要引用几个外部程序集.
T4主机是否可以自动包含项目中引用的程序集 - 而不是手动为每个程序集添加程序集指令?
例如,当使用相对于的路径时,从nuget引用程序集是一个移动目标$(ProjecDir)
.
使用汇编路径$(Project)\bin\Debug\Example.dll
似乎也不是最优的 - 因为它要求构建以前已经成功 - 如果你有.tt文件ErrorGeneratingOutput
在.cs文件中生成" ",情况可能不是这样!
更新1:
所以我对此进行了第二次尝试,但这次尝试解决围绕"TransformOnBuild"的问题(作为旁注,我强烈推荐@ kzu的优秀项目:https://github.com/clariuslabs/TransformOnBuild)而没有$(SolutionDir)在没有直接从msbuild运行TextTransform时可用.无论如何 - 我想出了一个两步解决方案.
msbuild目标使用WriteLinesToFile任务根据csproj文件中的引用生成一个.tt文件,其中包含一个新的程序集指令列表.
项目中的任何其他.tt文件都可以包含自动生成的文件以获取已注册的项目程序集.
以下是目标的示例:
<Target Name="Write_AssemblyRefs_TT" BeforeTargets="TransformOnBuild">
<!-- A message for all to enjoy! -->
<WriteLinesToFile File="@(MyTextFile)"
Lines="<# /* AUTOGENERATED BY MSBUILD and Kern Herskind Nightingale */ #>"
Overwrite="true"
Encoding="Unicode" />
<!-- Output all assembly references with a HintPath -->
<WriteLinesToFile File="@(MyTextFile)"
Lines="<#@ assembly name="$(ProjectDir)%(Reference.HintPath)" #>"
Overwrite="false"
Encoding="Unicode"
Condition="'%(Reference.HintPath)' != ''" />
<!-- Output all …
Run Code Online (Sandbox Code Playgroud) 目前,我正在开发一个框架,我想在visual studio菜单中添加自定义脚手架选项.
默认情况下,"对话框中带有视图的MVC5控制器,使用实体框架"选项3选择"CodeTemplates\MvcControllerWithContext\Controller.cs.t4",t4再次定位内部视图t4模板
我已经修改了t4模板差不多一年了,我还没有发现一条证据表明它是如何针对这些视图或者如何在脚手架对话框中添加选项.我搜索了很多,但是没有找到任何接近的东西.
总之,我只是在寻找可以添加或修改这些t4模板位置的地方,并在脚手架对话框中添加新脚手架的引用.
任何答案都将非常感激.谢谢.
asp.net-mvc t4 asp.net-mvc-3 asp.net-mvc-scaffolding t4scaffolding
当我需要生成一些C#代码,例如来自xsd schema的DTO类或excel表时,我使用了一些roslyn API.
打字稿是否有类似的东西?
我有一个.Net标准2.0库.在这个库中我有一个T4文件.该文件包含这些行.
<#
foreach (MessageType enumValue in Enum.GetValues(typeof(MessageType)))
{
var name = Enum.GetName(typeof(MessageType), enumValue);
#>
Run Code Online (Sandbox Code Playgroud)
我在Visual Studio中收到以下错误.
编译转换:类型"Enum"在未引用的程序集中定义.您必须添加对程序集'netstandard,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = cc7b13ffcd2ddd51'的引用.
如何添加'netstandard'的引用?