Azure DevOps Pipelines中DotNetCoreCLI@2发布任务忽略Projects设置
解决DotNetCoreCLI@2任务指定发布项目失效的问题
问题根源
DotNetCoreCLI@2任务默认开启publishWebProjects: true时,会自动扫描仓库内的Web项目并优先发布,当存在Razor类库这类易被误判为可发布目标的项目时,会覆盖你手动指定的projects参数,导致发布错项目。
可行解决方案
1. 关闭自动扫描,强制指定项目
这是最直接的解决方式,手动关闭publishWebProjects自动扫描功能,确保任务严格遵循你指定的项目路径:
- task: DotNetCoreCLI@2 inputs: command: 'publish' publishWebProjects: false projects: '**/Squil.Web.csproj' arguments: '-c Release -o $(Build.ArtifactStagingDirectory)'
如果项目文件在仓库根目录下,直接写Squil.Web.csproj即可,无需通配符。
2. 精准锁定项目路径
避免使用模糊的通配符,直接写项目文件的精确相对路径,比如项目在src/Web目录下:
- task: DotNetCoreCLI@2 inputs: command: 'publish' projects: 'src/Web/Squil.Web.csproj' arguments: '-c Release -o $(Build.ArtifactStagingDirectory)'
3. 标记类库不可发布
在Squil.Razor类库的.csproj文件中添加配置,明确告知任务该项目不可发布,从根源避免误识别:
<PropertyGroup> <IsPublishable>false</IsPublishable> </PropertyGroup>
同时确认Squil.Web项目的.csproj里保留:
<PropertyGroup> <IsPublishable>true</IsPublishable> </PropertyGroup>
验证方法
修改配置后触发构建,查看任务日志中的dotnet publish命令行,确认目标路径指向Squil.Web.csproj,再检查发布产物目录是否为Web项目的输出文件。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

