1

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
    }
}

この生成されたファイルでは、最初に intellisense がMyCompany表示MyCompany.MyCompanyされるため、生成された名前空間は でコントローラーを検索しようとしていますがMyCompany.MyCompany.MyCompany.MyProject.Web.Controllers.HomeController、もちろん!MyCompany.MyCompanyは含まれていません。MyCompany

T4MVC でソリューションの名前空間を正しく生成するにはどうすればよいですか?

4

1 に答える 1

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);
于 2013-03-01T00:33:08.930 に答える