asp.net - 使 T4MVC 与 ASP.NET 5 一起工作

标签 asp.net asp.net-core coreclr t4mvc r4mvc

根据this的最新评论从 Visual Studio Update 1 开始,ASP.NET 5 将支持 .tt 模板。

哪个恕我直言会很棒,因为在使用后 T4MVC多年来,我当然不想回去使用魔法字符串作为路由/ View 名称(容易出错且不利于重构)。

但是,我无法让它与 ASP.NET 5 RC 和 Visual Studio Professional 2015 Update 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.


  • 将 NuGet 添加到经典的 ASP.NET 4.6 解决方案并手动复制 T4MVC.tt , T4MVC.tt.hooks.t4T4MVC.tt.settings.xml到 ASP.NET 5 解决方案:Visual Studio 确实提供了在 .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    
    

    还有其他建议吗?

    另见 this有关 ASP.NET 5 中 T4MVC 替代品的相关问题。

    最佳答案

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

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

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

    关于asp.net - 使 T4MVC 与 ASP.NET 5 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34399939/

    相关文章:

    asp.net - 为什么不提供 c++ 作为 asp.net 的代码隐藏语言?

    asp.net - 使用多个数据键时,DataKeyNames 属性无法正常工作

    c# - 多用户类型身份——DbContext设计

    c# - ASP.NET Core 中枚举的自定义验证器

    c# - Infragistics UltraWebTree SelectedNode 导致 HttpUnhandledException

    c# - foreach 语句不能对类型为 'System.Data.DataSet' 的变量进行操作

    asp.net-core - 从后台任务访问 DbContext 服务

    asp.net - 我们可以通过 .net native 编译一个 asp.net 5 应用程序吗?

    c# - ASP.NET Core 中的 PostAsJsonAsync 方法在哪里?

    c# - 获取 UAP10 平台上加载的程序集列表