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

如何使用dotnet pack创建仅含MSBuild .targets文件的NuGet包?

制作仅含MSBuild目标文件的NuGet包(使用dotnet pack)

完全可以用dotnet pack实现,不需要依赖C#类库项目,推荐使用Microsoft.Build.NoTargets SDK,它专门用于构建不需要编译输出的项目,完美适配你的需求:

  1. 创建一个SDK风格的项目文件(比如命名为CustomBuildTargets.csproj),内容如下:
<Project Sdk="Microsoft.Build.NoTargets/3.7.0">
  <PropertyGroup>
    <PackageId>Your.Custom.Build.Targets</PackageId>
    <Version>1.0.0</Version>
    <Authors>你的名字</Authors>
    <Description>仅包含自定义MSBuild目标文件的NuGet包</Description>
    <PackageTags>MSBuild;Targets</PackageTags>
    <!-- 禁用编译输出打包,避免多余内容 -->
    <IncludeBuildOutput>false</IncludeBuildOutput>
    <!-- 可选:指定包的输出目录 -->
    <!-- <PackageOutputPath>../nupkgs</PackageOutputPath> -->
  </PropertyGroup>

  <ItemGroup>
    <!-- 将targets文件打包到NuGet约定的build目录,安装后MSBuild会自动导入 -->
    <None Include="build\**\*.targets" Pack="true" PackagePath="build\" />
    <!-- 若有props文件,可按同样方式添加 -->
    <!-- <None Include="build\**\*.props" Pack="true" PackagePath="build\" /> -->
  </ItemGroup>
</Project>
  1. 构建目录结构
    在项目根目录下创建build文件夹,把你的自定义.targets文件(比如MyCustom.targets)放入其中。

  2. 生成NuGet包
    在项目目录下执行命令:

dotnet pack -c Release

生成的.nupkg文件会默认输出到bin/Release目录下。

关键说明

  • Microsoft.Build.NoTargets SDK会跳过所有编译、资源处理等C#项目的构建步骤,完全没有额外开销;
  • NuGet的build目录是约定的MSBuild文件存放位置,安装包后,引用该包的项目会自动导入此目录下的.targets和.props文件;
  • 所有包的元数据(ID、版本、描述等)都直接在项目文件中配置,不需要单独维护.nuspec文件,完全适配dotnet pack的工作流。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 13:20:00