dotnet core 3 и T4 шаблоны
От: BlackEric http://black-eric.lj.ru
Дата: 21.04.20 11:00
Оценка:
Перевожу проект с фреймворка на коре 3. В проекте используется множество Т4 шаблонов для генерации кода по конфигам. В старом проекте код генерился при сохранении *.tt файла.
В новом при сохранении файла ничего не происходит.
Студия 16.5.4. Как его заставить работать?
https://github.com/BlackEric001
Re: dotnet core 3 и T4 шаблоны
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 21.04.20 11:23
Оценка: 4 (1)
Здравствуйте, BlackEric, Вы писали:

BE>Перевожу проект с фреймворка на коре 3. В проекте используется множество Т4 шаблонов для генерации кода по конфигам. В старом проекте код генерился при сохранении *.tt файла.

BE>В новом при сохранении файла ничего не происходит.
BE>Студия 16.5.4. Как его заставить работать?
http://www.westonsoftware.com/net-core-and-t4-templates-for-generating-code
и солнце б утром не вставало, когда бы не было меня
Re: TextTemplatingFileGenerator
От: Qbit86 Кипр
Дата: 21.04.20 18:09
Оценка: 14 (3)
Здравствуйте, BlackEric, Вы писали:

BE>Перевожу проект с фреймворка на коре 3. В проекте используется множество Т4 шаблонов для генерации кода по конфигам. В старом проекте код генерился при сохранении *.tt файла.

BE>В новом при сохранении файла ничего не происходит.
BE>Студия 16.5.4. Как его заставить работать?

Предположим, у тебя есть два шаблона Foo.tt и Bar.tt в папке Subfolder/ твоего SDK-style-проекта.

Тогда для работы с T4 тебе надо добавить такой сервис в MSBuild-скрипт (csproj-файл, Edit Project File в контекстном меню):
<ItemGroup>
  <Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
</ItemGroup>

И такие None-элементы для шаблонов:
  <ItemGroup>
    <None Update="Subfolder/Bar.tt">
      <Generator>TextTemplatingFileGenerator</Generator>
      <LastGenOutput>Bar.cs</LastGenOutput>
    </None>
    <None Update="Subfolder/Foo.tt">
      <Generator>TextTemplatingFileGenerator</Generator>
      <LastGenOutput>Foo.cs</LastGenOutput>
    </None>
  </ItemGroup>


При сохранении IDE добавит Compile-элементы для сгенерированных файлов, их тоже надо закоммитить в csproj-файл:
  <ItemGroup>
    <Compile Update="Subfolder\Bar.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>Bar.tt</DependentUpon>
    </Compile>
    <Compile Update="Subfolder\Foo.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>Foo.tt</DependentUpon>
    </Compile>
  </ItemGroup>
Глаза у меня добрые, но рубашка — смирительная!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.