使 T4MVC 与 ASP.NET 一起工作 5

Make T4MVC work with ASP.NET 5

根据 this 线程中的最新评论,.tt 模板 现在毕竟在 ASP.NET 5 中得到支持,从 [=56= 开始] 更新 1.

哪个恕我直言会很棒,因为在使用 T4MVC 多年之后,我当然不想回到使用魔术字符串作为 route/view 名称(容易出错且重构不友好)。

但是,我不能完全让它与 ASP.NET 5 RC 和 Visual Studio Professional 2015 Update 1 一起使用。

这是我尝试过的方法:

  1. T4MVC NuGet (3.16.5) 添加到空白 ASP.NET 5 解决方案:不,CoreCLR 抱怨并且没有 .tt 文件添加到项目中:

Error NU1002 The dependency T4MVCExtensions 3.16.5 in project WebApplication1 does not support framework DNXCore,Version=v5.0.

  1. 将 NuGet 添加到经典 ASP.NET 4.6 解决方案并手动将 T4MVC.ttT4MVC.tt.hooks.t4T4MVC.tt.settings.xml 复制到 ASP.NET 5 解决方案:Visual Studio 确实在 .tt 文件上提供给 "Run Custom Tool"....

...但是 运行 转换抛出一个 NullReferenceException:

Severity    Code    Description Project File    Line    Suppression State
Error       Running transformation: System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.VisualStudio.TextTemplating3FE65EE761BB32C4AE5AEEB1949A6FC143551E0A56C74E6B36511A416E2DE40FB92F7CB1BC6FC7A97FF5B622AE39377BBFB9463480555898ADB8DD6D286C533D.GeneratedTextTransformation.GetProjectItem(ProjectItems items, String subPath) in c:\dev\MyApp\WebApplication3\src\WebApplication3\T4MVC.tt:line 1398
   at Microsoft.VisualStudio.TextTemplating3FE65EE761BB32C4AE5AEEB1949A6FC143551E0A56C74E6B36511A416E2DE40FB92F7CB1BC6FC7A97FF5B622AE39377BBFB9463480555898ADB8DD6D286C533D.GeneratedTextTransformation.GetProjectItem(Project project, String name) in c:\dev\MyApp\WebApplication3\src\WebApplication3\T4MVC.tt:line 1378
   at Microsoft.VisualStudio.TextTemplating3FE65EE761BB32C4AE5AEEB1949A6FC143551E0A56C74E6B36511A416E2DE40FB92F7CB1BC6FC7A97FF5B622AE39377BBFB9463480555898ADB8DD6D286C533D.GeneratedTextTransformation.ProcessAreas(Project project) in c:\dev\MyApp\WebApplication3\src\WebApplication3\T4MVC.tt:line 600
   at Microsoft.VisualStudio.TextTemplating3FE65EE761BB32C4AE5AEEB1949A6FC143551E0A56C74E6B36511A416E2DE40FB92F7CB1BC6FC7A97FF5B622AE39377BBFB9463480555898ADB8DD6D286C533D.GeneratedTextTransformation.PrepareDataToRender(TextTransformation tt) in c:\dev\MyApp\WebApplication3\src\WebApplication3\T4MVC.tt:line 557
   at Microsoft.VisualStudio.TextTemplating3FE65EE761BB32C4AE5AEEB1949A6FC143551E0A56C74E6B36511A416E2DE40FB92F7CB1BC6FC7A97FF5B622AE39377BBFB9463480555898ADB8DD6D286C533D.GeneratedTextTransformation.TransformText() in c:\dev\MyApp\WebApplication3\src\WebApplication3\T4MVC.tt:line 40    WebApplication3 c:\dev\MyApp\WebApplication3\src\WebApplication3\T4MVC.tt   1398    

还有其他建议吗?

另请参阅 this 有关 ASP.NET 5 中 T4MVC 替代方案的相关问题。

在这一点上,T4MVC 并非设计用于 运行 在 ASP.NET 5 个项目上,所以我对它不起作用并不感到惊讶。

不久前,一个单独的 R4MVC 项目开始了,它使用基于 Roslyn 的方法。然而,这是在 ASP.NET 5 没有 T4 支持的时候完成的,现在已经重新访问了。

所以有可能有希望让 T4MVC 运行ning 在那里,但需要有人花时间看看它离工作还有多远。

我只是迈出了一小步,fixed 您点击的空引用(尚未发布,您需要手动修复)。但是,然后我遇到了一个似乎完全成功的情况。

无论如何,这里不是全面调查所有问题的地方,但如果有人想承担,我们可以讨论 https://github.com/T4MVC/T4MVC

正如 David Ebbo(嘿!)指出的那样,R4MVC - 一个业余项目很久以前就开始了,但由于(当时)Roslyn 编译器的重大更改而停滞不前。

幸运的是,该项目已经恢复,R4MVC 刚刚发布了它的第一个 alpha 版本,很快就会有更多的变化。

虽然该项目的工作方式有所不同,并且未使用 t4 模板,但最终结果是相同的,我们正在努力在不久的将来实现与 T4MVC 的功能对等。