You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使NuGet中的.liquid模板以非链接形式在Visual Studio项目中可用?

自定义Unchase NSwag模板的NuGet打包方案

1. 项目结构与.csproj配置

在模板类库项目根目录创建Templates/NJsonSchema文件夹,存放所有自定义.liquid模板。修改项目的.csproj文件,添加以下配置:

<ItemGroup>
  <!-- 标记模板文件,不复制到输出目录 -->
  <Content Include="Templates\NJsonSchema\*.liquid" 
           CopyToOutputDirectory="Never" 
           PackageCopyToOutput="false"
           IncludeInPackage="true">
    <!-- 打包时将文件放入content目录,供后续build目标复制 -->
    <PackagePath>content/Templates/NJsonSchema/</PackagePath>
  </Content>
</ItemGroup>

<PropertyGroup>
  <!-- 启用自动打包 -->
  <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  <IncludeContentInPack>true</IncludeContentInPack>
</PropertyGroup>

2. 添加Build目标实现模板复制

在项目根目录创建build文件夹,分别添加两个文件:

YourPackageName.props

<Project>
  <PropertyGroup>
    <!-- 定义模板在消费项目中的目标路径 -->
    <UnchaseTemplatesDir>$(MSBuildProjectDirectory)/Templates/NJsonSchema</UnchaseTemplatesDir>
  </PropertyGroup>

  <ItemGroup>
    <!-- 引用NuGet包内的模板文件 -->
    <UnchaseTemplateFiles Include="$(NuGetPackageRoot)/yourpackagename/$(PackageVersion)/content/Templates/NJsonSchema/*.liquid" />
  </ItemGroup>
</Project>

YourPackageName.targets

<Project>
  <!-- 首次安装时复制模板到项目目录,避免重复复制 -->
  <Target Name="CopyUnchaseTemplates" BeforeTargets="BeforeBuild" Condition="!Exists('$(UnchaseTemplatesDir)')">
    <MakeDir Directories="$(UnchaseTemplatesDir)" />
    <Copy SourceFiles="@(UnchaseTemplateFiles)" DestinationFolder="$(UnchaseTemplatesDir)" />
  </Target>

  <!-- 标记模板为非输出内容 -->
  <ItemGroup>
    <Content Remove="$(UnchaseTemplatesDir)/**/*.liquid" />
    <None Include="$(UnchaseTemplatesDir)/**/*.liquid" CopyToOutputDirectory="Never" />
  </ItemGroup>
</Project>

3. 手动打包配置(可选)

如果不用自动生成nuspec,手动编写YourPackageName.nuspec:

<package>
  <metadata>
    <id>Your.Internal.Templates.Unchase</id>
    <version>1.0.0</version>
    <authors>Your Team</authors>
    <description>自定义NJsonSchema模板,供Unchase NSwag代码生成使用</description>
    <dependencies>
      <group targetFramework="net48" />
      <group targetFramework="net8.0" />
    </dependencies>
  </metadata>
  <files>
    <file src="Templates\NJsonSchema\*.liquid" target="content/Templates/NJsonSchema" />
    <file src="build\*.props" target="build" />
    <file src="build\*.targets" target="build" />
  </files>
</package>

4. 消费项目配置

  1. 安装自定义NuGet包,执行命令:
Install-Package Your.Internal.Templates.Unchase

或通过NuGet包管理器安装。

  1. 修改Unchase的ConnectedService.json,指定模板目录为项目相对路径:
{
  "providerId": "Unchase.OpenAPI.ConnectedService",
  "version": "1.0.0",
  "extendedData": {
    "TemplateDirectory": "Templates/NJsonSchema",
    // 其他代码生成配置...
  }
}

注意事项

  • 包更新后,需在消费项目执行Update-Package Your.Internal.Templates.Unchase -Reinstall,确保模板同步更新
  • 若需强制更新模板,可修改CopyUnchaseTemplates目标的条件,比如检查模板文件的版本或哈希值

内容的提问来源于stack exchange,提问作者asontu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 16:40:56