You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地运行C#测试用例正常,Azure Pipeline报MagickBlobErrorException求助

解决Azure Pipeline中MagickImage找不到本地图片的问题

我之前也碰到过一模一样的问题!这个报错核心原因就是相对路径在Azure Pipeline的执行环境里和你本地开发环境的工作目录不匹配,导致程序找不到指定的图片文件。

问题拆解

你本地运行时,项目的启动目录和图片文件的相对位置是吻合的,所以../../../Images/OutputImages/output-SlightSkew.jpg能正确指向文件;但在Azure Pipeline中,测试任务的工作目录可能是解决方案根目录、测试项目的bin目录或者其他路径,这时候多级回退的相对路径就指向了一个不存在的位置,自然抛出UnableToOpenBlob异常。

具体解决方案

下面几个方法亲测有效,你可以按需尝试:

  • 用绝对路径替代相对路径(最稳妥)
    基于当前程序集的执行目录来构建绝对路径,彻底避免相对路径的歧义:

    using System.Reflection;
    using System.IO;
    using ImageMagick;
    
    // 获取当前测试程序集的目录
    var assemblyDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    // 组合出图片的完整绝对路径(根据你的项目结构调整回退的层级)
    var fullImagePath = Path.GetFullPath(Path.Combine(assemblyDirectory, "..", "..", "..", "Images", "OutputImages", "output-SlightSkew.jpg"));
    
    MagickImage sourceImage = new MagickImage(fullImagePath);
    

    Path.GetFullPath会帮你解析出最终的绝对路径,不管执行环境的工作目录是什么,都能精准定位到文件。

  • 确保图片文件被复制到输出目录
    右键你的图片文件output-SlightSkew.jpg,在属性面板里设置复制到输出目录为「始终复制」或「如果较新则复制」。这样在构建时,图片会被同步到测试项目的输出目录中,之后你可以用更短的相对路径(比如./Images/OutputImages/output-SlightSkew.jpg)来访问,或者结合输出目录路径使用。

  • 检查Pipeline环境的文件结构
    在Azure Pipeline的测试任务前,加一个PowerShell(Windows环境)步骤,打印当前工作目录和目录结构,确认图片是否存在:

    Write-Host "当前工作目录: $PWD"
    # 递归查找目标图片,确认位置
    Get-ChildItem -Recurse | Where-Object {$_.Name -eq "output-SlightSkew.jpg"}
    

    这能帮你快速排查是路径写错了,还是文件根本没被部署到Pipeline环境里。

  • 基于解决方案根目录构建路径
    如果图片文件存放在解决方案根目录下的Images文件夹里,可以直接定位到解决方案根目录:

    var assemblyDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    // 回退到解决方案根目录(层级根据你的项目结构调整)
    var solutionRoot = Path.GetFullPath(Path.Combine(assemblyDir, "..", "..", "..", ".."));
    var imagePath = Path.Combine(solutionRoot, "Images", "OutputImages", "output-SlightSkew.jpg");
    

另外还要注意:如果你的Pipeline用的是DotNetTest任务,要确保测试项目的.csproj文件里正确包含了图片文件,避免构建时遗漏。

内容的提问来源于stack exchange,提问作者Karthick Raja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 09:42:30