根据此线程的最新评论,.tt模板将在Visual Studio Update 1中开始支持ASP.NET 5,这实在是太棒了。 因为使用T4MVC多年后,我确实不想回到使用魔术字符串来表示路由/视图名称(容易出错且不便于重构)。
然而,我无法在ASP.NET 5 RC和Visual Studio Professional 2015 Update 1上让它正常工作。
以下是我的尝试过程:
以下是我的尝试过程:
- 向空白的ASP.NET 5解决方案添加T4MVC NuGet(3.16.5):不行,CoreCLR会抱怨并且没有.tt文件被添加到项目中:
Error NU1002 项目WebApplication1中依赖项T4MVCExtensions 3.16.5不支持框架DNXCore,版本=v5.0。
- 将NuGet添加到经典的ASP.NET 4.6解决方案,并手动复制
T4MVC.tt
、T4MVC.tt.hooks.t4
和T4MVC.tt.settings.xml
到ASP.NET 5解决方案:确实可以在.tt文件上“运行自定义工具”。
...但是运行转换会抛出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的替代方案的相关问题。
t4
文件被归类为内容文件,[tag:nuget] 不再将它们导入到您的项目中。同样适用于 js 或 css。这解决了您的第一个谜团。 - Maxime Rouiller