Azure持续部署中如何指定.NET网站项目解决多项目匹配错误
解决Azure持续部署多项目混淆的问题
这问题我之前帮好几个开发者捋顺过——当你的解决方案里同时包含网站和Web服务等多个可部署项目时,Azure DevOps的部署任务会默认用全局路径搜索所有.zip部署包,自然就出现“匹配到多个包”的冲突了。咱们用这几个办法解决:
1. 精准指定部署包的路径
在Azure DevOps的Azure App Service Deploy任务里,找到Package or folder字段,把默认的全局搜索路径:
D:\a\r1\a\**\*.zip
替换成指向你网站项目的具体路径,比如:
- 如果你的网站项目名为
MyWebSite,可以改成:D:\a\r1\a\**\MyWebSite.zip - 更稳妥的是直接指向构建输出的特定位置:
D:\a\r1\a\_你的构建管道名称\drop\MyWebSite.zip
这样部署任务就只会匹配到你需要的网站包,不会再把Web服务的包也拉进来。
2. 构建阶段只生成目标项目的部署包
从根源上减少多余的包:
- 如果用VSBuild任务,把
Solution字段从整个解决方案的.sln路径,改成只指向网站项目的.csproj文件,比如:**/MyWebSite.csproj - 如果用DotNetCoreCLI任务,在
publish命令里指定项目路径:
dotnet publish **/MyWebSite.csproj -c Release -o $(Build.ArtifactStagingDirectory)
这样构建完成后,只会输出网站项目的部署包,从源头上避免多包冲突。
3. 调整构建任务的发布设置
有些构建任务自带“自动发布Web项目”的选项,你可以:
- 关闭这个自动选项,手动指定要发布的项目
- 或者在发布设置里明确勾选只包含你的网站项目,排除Web服务项目
错误原因补充
你看到的报错:
Errors (1) Error: More than one package matched with specified pattern: D:\a\r1\a***.zip. Please restrain the search pattern.
本质就是默认的全局搜索路径D:\a\r1\a\**\*.zip找到了网站和Web服务两个项目的部署包,Azure无法判断要部署哪一个,所以抛出了这个提示。只要缩小搜索范围到单一包就能解决。
内容的提问来源于stack exchange,提问作者Steve Coleman
相关产品推荐
相关产品推荐

