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

如何从引用Xunit的单元测试项目生成Nuget包

问题根本原因

.NET SDK 及 Visual Studio 内部存在默认规则:只要项目引用了 xunit 核心 NuGet 包,就会自动将项目标记为单元测试项目,测试项目默认会禁用 NuGet 打包逻辑,哪怕手动勾选了「生成时生成 NuGet 包」选项也会被该规则覆盖。

可行解决方案

方案1:强制关闭测试项目识别(最直接)

  • 右键你的类库项目,选择「编辑项目文件」打开 .csproj 配置
  • 在顶层 <PropertyGroup> 节点中添加以下两个配置:
<!-- 强制告知SDK当前不是测试项目 -->
<IsTestProject>false</IsTestProject>
<!-- 显式指定生成时自动打包,覆盖默认禁用规则 -->
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  • 保存配置后重新生成项目,即可在输出目录看到生成的 .nupkg 文件

方案2:调整 xunit 依赖的引用规则

如果你的扩展仅作为编译时依赖使用,不需要把完整 xunit 运行时传递给引用方,可以调整 xunit 包的引用属性:

  • 找到项目文件中 xunit 的 PackageReference 节点,修改为如下配置:
<PackageReference Include="xunit" Version="你使用的xunit版本号">
  <!-- 不把xunit标记为仅当前项目私有资产,允许传递给引用该扩展的项目 -->
  <PrivateAssets>none</PrivateAssets>
  <!-- 仅引用xunit的编译时资产,不引入运行时相关内容,避免被识别为测试项目 -->
  <ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
  • 该方案适合纯扩展类库场景,不会影响引用你扩展包的项目正常使用xunit功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:09:02