Шаблон T4 Получить атрибуты - PullRequest
       32

Шаблон T4 Получить атрибуты

3 голосов
/ 28 декабря 2011

Я пытаюсь настроить шаблоны T4, используемые в MVCScaffolding.Я хотел бы отфильтровать свойства, которые имеют атрибут NotMapped.

Моя проблема в том, что коллекция атрибутов кажется пустой.Я попытался распечатать атрибуты, как показано ниже:

List<ModelProperty> properties = GetModelProperties(Model.ViewDataType, true);
foreach (ModelProperty property in properties) {
    if (!property.IsPrimaryKey && !property.IsForeignKey) {
#>
        <th>
            @Html.LabelFor(x => x.First().<#= property.Name #>)
            <!--
            <#foreach(var attribute in property.Type.CodeType.Attributes)
            {#>
              Attribute: <#=attribute.GetType().Name#>
            <#}#>
            -->
        </th>
<#
    }
}
#>

Я не могу найти никакой информации об этом, которая действительно работает, и пока это очень медленный случай проб и ошибок.Как правильно получить атрибуты или заставить шаблон игнорировать несопоставленные атрибуты?

1 Ответ

1 голос
/ 05 января 2012

Это не точный ответ на ваш вопрос, но он предоставит больше информации о проблеме. Я испытал точно так же. В этом вопросе есть несколько странных вещей:

  • Это работало раньше. Я запускаю тот же код (он из системы контроля версий, поэтому я уверен), что и 2 месяца назад, а сегодня он не работает.
  • Тот же код при запуске из-за пределов двигателя T4 (например, приложение MVC) работает отлично.

Я изменил свой код, чтобы его можно было запускать извне Visual Studio:

string assemblyPath = Host.ResolveAssemblyReference("$(ProjectDir)$(OutDir)T4Mvc.dll");

было изменено на:

string assemblyPath = @"D:\AbsolutePath\bin\T4Mvc.dll";

Затем я использовал TextTransform.exe вместо RMB> Запустить пользовательский инструмент

использование

TextTransform.exe AjaxServices.tt -out AjaxServices.js

(Файл TextTransform.exe можно найти в: «C: \ Program Files (x86) \ Common Files \ microsoft shared \ TextTemplating \ 10.0»).

Также у меня отключен специфичный для хоста флаг.

Тот же шаблон при исполнении из TextTransform.exe вместо VS работал отлично. Кажется, что это какая-то проблема с VS. Пожалуйста, попробуйте использовать TextTransform. exe и скажите, работает ли он.

...