【问题标题】:I want to setting T4 Template with wildcard in csproj我想在 csproj 中使用通配符设置 T4 模板
【发布时间】:2022-08-24 13:58:55
【问题描述】:

我所做的

我的项目文件中有多个 tt 文件。 因此,为每个文件创建了许多条目,如下所示。

<ItemGroup>
  <Compile Update=\"Sample.cs\">
    <DesignTime>True</DesignTime>
    <AutoGen>True</AutoGen>
    <DependentUpon>Sample.tt</DependentUpon>
  </Compile>
</ItemGroup>

<ItemGroup>
  <None Update=\"Sample.tt\">
    <Generator>TextTemplatingFileGenerator</Generator>
    <LastGenOutput>Sample.cs</LastGenOutput>
  </None>
</ItemGroup>

我想防止为每个 tt 文件创建此条目。

我试过的

以下语句是使用通配符进行的。

<ItemGroup>
  <Compile Update=\"**/*.tt.cs\">
    <DesignTime>True</DesignTime>
    <AutoGen>True</AutoGen>
    <DependentUpon>%(Filename)</DependentUpon>
  </Compile>
  <None Update=\"**/*.tt\">
    <Generator>TextTemplatingFileGenerator</Generator>
    <LastGenOutput>%(Filename).tt.cs</LastGenOutput>
  </None>
</ItemGroup>

tt 文件中使用了以下设置。

<#@ output extension=\"tt.cs\" #>

问题

T4 工作,但是当我保存 tt 文件时,以下条目被添加到 csproj。

<ItemGroup>
  <Compile Update=\"Sample.tt.cs\">
    <DesignTime>True</DesignTime>
  </Compile>
</ItemGroup>

问题

如何防止添加条目?

    标签: visual-studio msbuild code-generation t4 csproj


    【解决方案1】:

    我们可以从this page看到Update的描述

    使您能够修改项目的元数据;通常用于覆盖 一组项目后特定项目的默认元数据是 最初指定(例如使用通配符)。

    保存 tt 文件时更新会覆盖编译,因此此代码将添加到 scproj。这似乎并不能阻止。

    <ItemGroup>
      <Compile Update="Sample.tt.cs">
        <DesignTime>True</DesignTime>
      </Compile>
    </ItemGroup>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多