如何在Azure经典生成管道的dotnet core发布任务中排除文件夹/项目
解决方案
以下是针对Azure DevOps经典生成管道dotnet Publish任务扫描全仓库问题的可行配置方案,按生效优先级排序:
方案1:修改Publish任务工作目录
直接限定Publish任务的执行范围到目标项目目录,从根源避免扫描无关文件夹:
- 编辑你的.Net Core Publish任务,找到工作目录配置项
- 填写路径:
$(Build.SourcesDirectory)/NetCoreProject - 「项目路径」参数填写对应解决方案或csproj的相对路径即可(比如
./YourProject.sln)
方案2:使用自定义dotnet命令显式指定目标
如果预设的Publish任务仍触发全量扫描,改用自定义命令强制指定要发布的文件:
- 新增DotNet任务,命令选择自定义
- 自定义命令输入
publish - 参数填写:
$(Build.SourcesDirectory)/NetCoreProject/你的解决方案名.sln --output $(Build.ArtifactStagingDirectory) --no-restore --no-build注:加
--no-restore和--no-build是因为你已经在前置任务完成了还原和构建,既能提速也能避免重复执行逻辑。
方案3:通过MSBuild属性强制排除无关目录
如果前两个方案仍未生效,直接给MSBuild传递排除规则,强制跳过NetCPPProject目录的扫描:
- 在Publish任务的参数中追加如下属性:
--property:DefaultItemExcludes="$(DefaultItemExcludes);$(Build.SourcesDirectory)/NetCPPProject/**/*;$(Build.SourcesDirectory)/其他无关目录/**/*"
原方案失效原因说明
.artifactignore仅控制Azure DevOps制品上传阶段的文件过滤,不影响dotnet publish本身的扫描逻辑- 之前仅指定sln/csproj路径时,MSBuild默认会扫描当前工作目录下所有文件判断依赖关系,所以仍会触发无后缀文件的识别报错
内容的提问来源于stack exchange,提问作者Sparrow Techie
相关产品推荐
相关产品推荐

