无法创建依赖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
相关产品推荐
相关产品推荐

