Два пользовательских инструмента для одного файла? - PullRequest
1 голос
/ 16 мая 2011

Я хочу сгенерировать некоторый код из моего файла dbml (Linq to Sql), файл dbml размещен во многих частях моего проекта, поэтому я написал специальный инструмент для этой цели

Но проблема в том, что dbml уже содержит пользовательский инструмент MSLinqToSQLGenerator,

Итак, знаете ли вы какой-либо способ установки двух пользовательских инструментов для одного файла? Если нет, дайте мне знать ваше представление об этом

Ответы [ 2 ]

2 голосов
/ 17 мая 2011

Вы получите надлежащий контроль над T4, если включите генератор LINQ to SQL T4 в ответственность вашего шаблона.

Если я правильно понял, вы хотите сохранить поведение по умолчанию генератора .dbml, нотакже добавьте свой собственный.

Это выглядело немного "старым", и я некоторое время лично не использовал LINQ to SQL, но я использовал эту замену генератора T4 "как есть", который произвел эквивалентстандартного генератора .dbml.

https://github.com/damieng/L2ST4

Не уверен, что это актуально с версией VS 2010, но вы всегда можете сравнить стандартный сгенерированный код .dbml и этот вывод T4 ивнесите необходимые изменения для достижения идентичного результата.

Конечно, вы можете просто иметь несколько разных генераторов и просто запускать их с «Преобразовать все шаблоны», но, основываясь на вашем вопросе, вы хотите, чтобы генератор был подключенк файлу конкретного пользовательского инструмента.

Возможно, вы захотите проверить (если он вам уже не знаком) также T4 Toolbox https://github.com/olegsych/T4Toolbox that добавляет в файл пользовательский инструмент "T4ScriptFileGenerator".Он эффективно выполняет код T4 при изменении файла.

2 голосов
/ 16 мая 2011

Visual Studio будет поддерживать только один «Пользовательский инструмент» для каждого файла, но вы можете добавить шаг предварительной компиляции, чтобы запускать другие инструменты для чего угодно. Например, на вкладке «События сборки» одного из моих проектов установлен следующий шаг предварительной компиляции.

"$(DevEnvDir)..\..\..\Common Files\Microsoft Shared\TextTemplating\10.0\TextTransform" "$(ProjectDir)DataContext\Northwind.proxy.tt"

Здесь много относительного пути, чтобы найти инструмент командной строки T4, но вы поняли идею. Этот конкретный файл T4 рассчитан на то, чтобы находиться в том же каталоге, что и файл .dbml, который он читает для генерации своего вывода.

Перед компиляцией проекта вы можете запустить любой внешний инструмент, какой захотите. Просто убедитесь, что после первого запуска вы включите вывод инструмента в проект. После этого, поскольку файл изменяется как часть этапа PRE-компиляции, он всегда будет обновляться в каждой сборке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...