Visual Studio 2017生成NetCoreApp2.0类库NuGet包失败求助
我碰到过不少开发者遇到这个情况,结合你的场景(VS2017 + netcoreapp2.0 csproj类库 + NuGet4.5),给你几个逐步排查的方向:
检查项目文件(csproj)的Pack配置
虽然你说已经在项目属性里填了包信息,但有时候VS可能没把这些设置正确同步到csproj文件里。右键项目选择「编辑.csproj」,确认文件里的<PropertyGroup>节点包含必填的包信息,并且加上生成包的开关:<PropertyGroup> <PackageId>DuDiKiCommon</PackageId> <Version>1.0.0</Version> <!-- 替换成你填的版本号 --> <Authors>你的作者名</Authors> <Description>你的包描述</Description> <GeneratePackageOnBuild>True</GeneratePackageOnBuild> </PropertyGroup>保存后重新尝试Pack,这个开关能确保Pack命令触发包生成逻辑。
查看详细的MSBuild输出日志
你现在只看到Build启动的信息,看不到Pack失败或跳过的原因。打开VS的「工具」->「选项」->「项目和解决方案」->「生成并运行」,把“MSBuild项目生成输出详细程度”改成「详细」或者「诊断」,然后再次点击Pack命令。这时你能在输出窗口看到更完整的日志,比如是否有缺少必填字段、权限问题或者其他配置错误导致Pack步骤被跳过。用dotnet命令行尝试Pack
有时候VS的GUI会有隐藏的问题,试试用命令行操作:打开命令提示符,导航到你的项目根目录(csproj所在文件夹),运行以下命令:dotnet pack --configuration Debug命令行会直接输出Pack过程中的所有错误信息,比VS的输出更直观,能快速定位问题。比如如果有依赖项缺失、版本格式错误,都会在这里明确提示。
确认输出目录是否正确
别着急说没生成,先去默认路径找找看。.NET Core 2.0项目的nupkg默认生成在bin/{你的配置}/netcoreapp2.0/目录下,比如你用Debug配置的话,就是bin/Debug/netcoreapp2.0/DuDiKiCommon.{版本号}.nupkg,说不定包已经生成了只是你找错了地方。检查.NET Core SDK版本
VS2017里的NuGet4.5需要搭配对应的.NET Core SDK版本(至少是2.0.x系列)。打开命令行运行dotnet --version,确认SDK版本符合要求。如果版本过低,安装对应版本的SDK后再试。
内容的提问来源于stack exchange,提问作者Hinrich

