2013-02-28 108 views
1

我剛剛將T4MVC(3.5.1)插入到我的ASP.NET MVC3項目中。T4MVC錯誤地爲控制器生成命名空間

它似乎是在* .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顯示在智能感知MyCompany.MyCompany,所以產生的命名空間是試圖尋找我的控制器在MyCompany.MyCompany.MyCompany.MyProject.Web.Controllers.HomeController,當然MyCompany.MyCompany不包含MyCompany

如何才能讓T4MVC爲我的解決方案正確生成名稱空間?

+1

既然你打開https://t4mvc.codeplex.com/workitem/20,我們可以繼續討論那邊。 – 2013-02-28 21:46:37

+0

感謝超級速度響應大衛! – elwyn 2013-03-01 00:33:52

回答

1

大衛博我指出了正確的方向,別人已經在這裏了同樣的問題: 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);