【问题标题】:T4MVC is generating namespace for controllers incorrectlyT4MVC 为控制器错误地生成命名空间
【发布时间】:2013-02-28 03:36:37
【问题描述】:

我刚刚将 T4MVC (3.5.1) 插入到我的 ASP.NET MVC3 项目中。

似乎在 *.generated.cs 文件中生成了错误的命名空间。例如:

using System.Web;
using System.Web.Hosting;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html;
using System.Web.Routing;
using T4MVC;

namespace MyCompany.MyCompany.MyProject.Web.Controllers
{
    public partial class HomeController
    {
        //snip

        [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
        public partial class T4MVC_HomeController : MyCompany.MyCompany.MyProject.Web.Controllers.HomeController
        {
            //snip
        }

        //snip
    }
}

在这个生成的文件中,第一个MyCompany在intellisense中显示MyCompany.MyCompany,所以生成的命名空间试图在MyCompany.MyCompany.MyCompany.MyProject.Web.Controllers.HomeController寻找我的控制器,当然MyCompany.MyCompany不包含MyCompany

如何让 T4MVC 为我的解决方案正确生成命名空间?

【问题讨论】:

标签: asp.net-mvc asp.net-mvc-3 mvccontrib t4mvc


【解决方案1】:

David Ebbo 为我指出了正确的方向,其他人也遇到了同样的问题: https://t4mvc.codeplex.com/discussions/404550

我使用了那里提到的global:: 解决方案,具体来说,在T4MVC.tt 的第321 行中,我进行了更改:

public partial class <#=controller.DerivedClassName #> : <#=controller.FullClassName #>

public partial class <#=controller.DerivedClassName #> : global::<#=controller.FullClassName #>

编辑: 我还必须更新第 1592 行以考虑参数(我的模型有相同的命名空间问题)。我对此做了一个快速而肮脏的改变:

TT.Write(p.Type + " " + p.Name);

到这里:

if (p.Type.StartsWith("FooBar"))
    TT.Write("global::" + p.Type + " " + p.Name);
else
    TT.Write(p.Type + " " + p.Name);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 2018-01-07
    • 1970-01-01
    • 2014-05-19
    • 2012-05-14
    • 2013-02-23
    相关资源
    最近更新 更多