Вопрос по asp.net-mvc, t4, asp.net-mvc-3 – Поместите все методы в один файл .tt и используйте его в других файлах t4 в CodeTemplates MVC.

2

Я использую ASP.NET MVC 3Пользовательские шаблоны кода Мне нужно поместить несколько методов в один файл t4, а затем использовать его во всех моих шаблонах t4.

Итак, это мой файл general.tt:

<#@ template language="C#" #>
<#@ assembly name="System" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.ComponentModel.DataAnnotations" #>
<#@ assembly name="System.Data" #>
<#@ assembly name="System.Data.Entity" #>
<#@ assembly name="System.Data.Linq" #>
<#@ assembly name="System.Xml.Linq" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.ComponentModel.DataAnnotations" #>
<#@ import namespace="System.ComponentModel" #>
<#@ import namespace="System.Data.Linq.Mapping" #>
<#@ import namespace="System.Data.Objects.DataClasses" #>
<#@ import namespace="System.Reflection" #>
<#@ import namespace="Microsoft.VisualStudio.Web.Mvc.Scaffolding.BuiltIn" #>

<#+ 
public class XXD {
    public string getitNow(){
        return "Yup thats it!";
    }
}
 #>

Затем я использую его в файле create.tt следующим образом:

<#@ include file="general.tt" #>

...

<#+

private string GetitNow(){
   XXD xx = new XXD();
   return xx.getitNow();
}

но возникает ошибка, когда я хочу добавить View Use создать шаблон:

ошибка: Загрузка включенного файла 'general.tt' вернула пустую или пустую строку. Преобразование не будет запущено.

Так в чем же проблема? что вы предлагаете сделать это?

Ваш Ответ

2   ответа
0

general.tt на другой путь кcreate.tt?

Да, также у меня есть intellisense, когда я хочу определитьXXD класс илиgetitNow() метод, который они оба определены вgeneral.tt Saeid
5

когда я проверял, леса MVC все еще использовали пользовательскую реализацию ITextTemplatingEngineHost, которая реализует директиву включения иначе, чем служба ITextTemplating в Visual Studio. Я предлагаю вам представитьсоединять ошибка, опишите проблему, с которой вы столкнулись, и попросите изменить реализацию T4 в MVC на встроенную службу ITextTemplating, которая не имеет этого и других ограничений.

Олег прав. Я могу себе представить, возможно, обойти это, имея один обычный шаблон T4, который выводит ваш специфичный для MVC шаблон, включая ваши два фрагмента. Другими словами, шаблон для создания шаблона. Однако, это не будет очень доступно для новичка, впервые подходящего к вашему проекту. GarethJ

Похожие вопросы