让T4MVC与ASP.NET 5兼容

7
根据线程的最新评论,.tt模板将在Visual Studio Update 1中开始支持ASP.NET 5,这实在是太棒了。 因为使用T4MVC多年后,我确实不想回到使用魔术字符串来表示路由/视图名称(容易出错且不便于重构)。 然而,我无法在ASP.NET 5 RC和Visual Studio Professional 2015 Update 1上让它正常工作。
以下是我的尝试过程:
  1. 向空白的ASP.NET 5解决方案添加T4MVC NuGet(3.16.5):不行,CoreCLR会抱怨并且没有.tt文件被添加到项目中:

Error NU1002 项目WebApplication1中依赖项T4MVCExtensions 3.16.5不支持框架DNXCore,版本=v5.0。

  1. 将NuGet添加到经典的ASP.NET 4.6解决方案,并手动复制T4MVC.ttT4MVC.tt.hooks.t4T4MVC.tt.settings.xml到ASP.NET 5解决方案:确实可以在.tt文件上“运行自定义工具”。

enter image description here

...但是运行转换会抛出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    

还有其他的建议吗?

参见此处关于在ASP.NET 5中使用T4MVC的替代方案的相关问题。


1
首先,t4 文件被归类为内容文件,[tag:nuget] 不再将它们导入到您的项目中。同样适用于 js 或 css。这解决了您的第一个谜团。 - Maxime Rouiller
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Maxime Rouiller
2
最后,David Ebbo是编写该软件包的人。他是微软员工,我会尝试让他看到这个帖子。 :) - Maxime Rouiller
2个回答

3
正如 David Ebbo 指出的那样,一个名为 R4MVC 的副项目因 Roslyn 编译器的 (当时) 破坏性变化而停滞了很长时间。
幸运的是,该项目已经复苏,R4MVC 刚刚发布了第一个 alpha 版本,并将很快推出更多变化。
虽然该项目的工作方式有所不同,并且没有使用 t4 模板,但最终结果是相同的,我们正在努力实现与 T4MVC 的功能平衡。

2
此时,T4MVC并未设计为在ASP.NET 5项目上运行,因此我并不惊讶它无法工作。
一段时间以前,一个名为R4MVC的单独项目开始了,使用基于Roslyn的方法。然而,当时ASP.NET 5没有T4支持,现在已经得到了修复。
因此,有可能希望让T4MVC在那里运行,但需要有人投入时间来看看离实现还有多远。
我刚刚迈出了一个小步骤,并修复了您遇到的空引用(尚未发布,您需要手动修复)。然而,接下来我遇到了一个条件,似乎完全卡住了。
无论如何,这不是完全调查所有问题的地方,但如果有人想要承担这个任务,我们可以在https://github.com/T4MVC/T4MVC上讨论。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接