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

无法创建依赖xunit的NuGet包,是否存在操作遗漏或Bug?

排查.NET Standard 2.0项目加xunit依赖后打包失败的问题

我之前也碰到过类似的打包坑,结合你的描述,大概率是xunit引入的项目配置干扰了打包流程,下面给你一步步排查的思路:

第一步:先搞清楚到底哪里错了

你现在只知道打包失败,但没看到具体错误信息,这很难定位问题。把命令里的-v:n改成-v:d(详细日志模式),重新执行build和pack命令:

dotnet build /p:SourceLinkCreate=true -v:d -c:Release -p:ci=true
dotnet pack -v:d -c=Release --no-build --include-source --include-symbols --output .\bin

仔细看输出里的红色错误提示,比如有没有出现「Skipping project because it is not packable」这类信息——这很可能是关键。

最可能的原因:项目被自动标记为测试项目

当你给类库项目安装xunit包时,NuGet会自动在你的.csproj文件里添加<IsTestProject>true</IsTestProject>属性,而测试项目默认是禁止打包的(IsPackable默认值为false),这就导致dotnet pack直接跳过了你的项目。

解决办法很简单:手动在.csproj里添加IsPackable=true:

<PropertyGroup>
  <TargetFramework>netstandard2.0</TargetFramework>
  <!-- 强制开启打包功能 -->
  <IsPackable>true</IsPackable>
  <!-- 如果你的项目确实是测试项目,保留这行;如果只是类库引用xunit,可以删掉 -->
  <IsTestProject>true</IsTestProject>
</PropertyGroup>

修改后重新执行打包命令,应该就能正常生成NuGet包了。

其他可能的排查点

  • xunit版本兼容性:确保你安装的xunit版本支持.NET Standard 2.0,比如xunit 2.4.x及以上版本都是兼容的,避免用太老或预览版的包。
  • SourceLink配置问题:你用了/p:SourceLinkCreate=true参数,但如果没安装对应的SourceLink包(比如Microsoft.SourceLink.Common),可能会触发警告甚至错误。不过你换其他依赖能成功,这个大概率不是主因,但可以试试去掉这个参数先测试打包是否正常。
  • 多余的测试相关包:如果你的项目不是测试项目,只是单纯引用xunit的类库,别不小心安装了xunit.runner.visualstudio这类测试运行器包,它们会引入额外的构建目标,干扰打包流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:38:20