首页 > 解决方案 > 将文本模板 (*.tt) 包含到 .NET Standard NuGet 包中

问题描述

我通过在项目设置中选择“在构建时生成 NuGet 包”并使用 MyGet 构建服务,将 .NET Standard 类库作为包发布到 MyGet 提要上。我的Cds.IoC.csprj样子是这样的:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <RootNamespace>Cds.IoC</RootNamespace>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <Authors>...</Authors>
    <Company>...</Company>
    <Product>...</Product>
    <Description>...</Description>
    <Copyright>© 2018</Copyright>
    <PackageTags>...</PackageTags>
    <PackageReleaseNotes>...</PackageReleaseNotes>
    <AssemblyVersion>0.0.0.1</AssemblyVersion>
    <FileVersion>0.0.0.1</FileVersion>
    <Version>1.0.1-alpha</Version>
  </PropertyGroup>
</Project>

如何将文本模板Some.tt文件添加到包中,以便它显示在引用项目中?我不希望它在包构建时生成输出;只是在寻找一种将 TT 文件自动添加到引用项目的方法。

标签: c#visual-studionuget.net-standardcsproj

解决方案


如何将文本模板 Some.tt 文件添加到包中,以便它显示在引用项目中?

您可以使用该属性<Pack>true</Pack>将文本模板 Some.tt 文件添加到包中:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <RootNamespace>Cds.IoC</RootNamespace>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <Authors>...</Authors>
    <Company>...</Company>
    <Product>...</Product>
    <Description>...</Description>
    <Copyright>© 2018</Copyright>
    <PackageTags>...</PackageTags>
    <PackageReleaseNotes>...</PackageReleaseNotes>
    <AssemblyVersion>0.0.0.1</AssemblyVersion>
    <FileVersion>0.0.0.1</FileVersion>
    <Version>1.0.1-alpha</Version>
  </PropertyGroup>
  <ItemGroup>
    <None Update="some.tt">
      <Generator>TextTemplatingFileGenerator</Generator>
      <LastGenOutput>some.txt</LastGenOutput>    
    </None>
    <None Update="some.txt">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>some.tt</DependentUpon>
      <Pack>true</Pack>
    </None>
  </ItemGroup>
</Project>

当你构建项目时,生成的源文件some.tt会添加到nuget包中,然后你将这个nuget包添加到项目中,这个文件就会添加到项目中。

查看文档NuGet 包并还原为 MSBuild 目标以了解更多详细信息。

希望这可以帮助。


推荐阅读