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

如何为.NET Framework创建仅打包NuGet包的项目

解决方案:创建无自身输出的NuGet引用收集项目

核心思路

要彻底避免生成项目自身的DLL/PDB,需要从MSBuild的编译和输出环节直接切断自身产物的生成逻辑,同时保留NuGet包的还原与复制流程。

完整csproj配置

直接替换原有项目文件为以下内容,按需调整目标框架和引用包:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework> <!-- 可根据需求改为net7.0/net8.0等 -->
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
    <EnableDefaultItems>false</EnableDefaultItems>
    <NoBuild>false</NoBuild>
    <GeneratePackageOnBuild>false</GeneratePackageOnBuild>
  </PropertyGroup>

  <ItemGroup>
    <!-- 这里添加需要引用的NuGet包 -->
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  </ItemGroup>

  <Target Name="CleanSelfOutputs" AfterTargets="Build">
    <!-- 兜底删除可能残留的自身输出文件 -->
    <Delete Files="$(OutputPath)$(AssemblyName).dll" />
    <Delete Files="$(OutputPath)$(AssemblyName).pdb" />
    <Delete Files="$(OutputPath)$(AssemblyName).xml" />
  </Target>
</Project>

配置细节说明

  • <EnableDefaultCompileItems>false</EnableDefaultCompileItems>:禁用默认编译规则,因为项目无源码,无需编译任何文件
  • <Compile>None</Compile>:明确声明没有需要编译的文件
  • <EnableDefaultItems>false</EnableDefaultItems>:关闭默认文件自动包含逻辑,防止意外引入文件触发编译
  • <GenerateAssemblyInfo>false</GenerateAssemblyInfo>:不自动生成AssemblyInfo相关文件,减少无用输出
  • CleanSelfOutputs目标:作为最后保障,即使有遗漏的自身产物,也会在构建完成后自动删除

验证方法

执行dotnet build后,查看输出目录(默认是bin/Debug/[目标框架]):只会看到NuGet包对应的DLL文件(比如Newtonsoft.Json.dll),完全没有项目自身生成的ClassLibrary.dll、PDB等文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:19:52