如何仅通过CLI为基于csproj打包的NuGet包添加标签
解决NuGet包通过csproj添加标签(含VSTS提交ID)的问题
我来帮你搞定这个问题!你不想维护单独的.nuspec文件,只想通过csproj打包并添加标签(包括VSTS的提交ID),之前的命令无效是因为没找对正确的MSBuild属性名,下面一步步来:
1. 先在csproj里配置标签属性
打开你的项目文件(.csproj),在<PropertyGroup>节点里添加PackageTags属性——这是NuGet识别的标准属性,之前你用的Tags不是正确的参数名,所以命令不生效。
你可以选两种配置方式:
<PropertyGroup> <!-- 方式1:设置默认标签,后续命令行可覆盖 --> <PackageTags>core;utility</PackageTags> <!-- 方式2:直接引用VSTS提交ID,自动加入标签(推荐,不用每次传参数) --> <!-- <PackageTags>demo;$(Build_SourceVersion)</PackageTags> --> </PropertyGroup>
注意:VSTS的
Build.SourceVersion环境变量在MSBuild里会自动转成Build_SourceVersion(下划线代替点),所以直接写这个就能读取到提交ID。
2. 正确的打包命令
根据你习惯的工具,选对应的命令:
用dotnet pack(推荐,更简洁)
如果用.NET CLI,直接通过-p参数传递标签值,把提交ID拼进去:
dotnet pack YourProject.csproj -p:PackageTags="demo;$(Build.SourceVersion)"
在VSTS的命令行任务里,$(Build.SourceVersion)会自动替换成当前构建的提交ID。
用nuget pack命令
如果你坚持用NuGet CLI,要注意属性名是PackageTags,不是Tags:
nuget pack YourProject.csproj -Properties PackageTags="demo;$(Build.SourceVersion)"
3. VSTS构建中的配置
在VSTS里,你可以直接把打包命令放到「命令行任务」或者「NuGet任务」里:
- 如果用NuGet任务,选择「pack」动作,在「属性」框里填写
PackageTags="demo;$(Build.SourceVersion)" - 确保构建服务有权限读取
Build.SourceVersion变量(默认是开启的,不用额外配置)
这样打包出来的NuGet包标签就会包含你指定的内容和提交ID,完全不用维护.nuspec文件,满足你的维护需求~
内容的提问来源于stack exchange,提问作者ʃʈɑɲ
相关产品推荐
相关产品推荐

