Unit testing 从资源加载时无法访问DICOM图像流

Unit testing 从资源加载时无法访问DICOM图像流,unit-testing,.net-core,embedded-resource,fo-dicom,Unit Testing,.net Core,Embedded Resource,Fo Dicom,我正在使用fo Dicom访问图像流。我有一些单元测试,它们调用一个方法来加载测试DICOM文件。为了自动化构建管道中的过程,我从使用映像路径切换到加载资源。我现在加载测试DICOM文件,如下所示: public static DicomFile RequestDicomFile(Resource resource) { //return DicomFile.Open(Reference.GetPath(resource)); DicomFile

我正在使用fo Dicom访问图像流。我有一些单元测试,它们调用一个方法来加载测试DICOM文件。为了自动化构建管道中的过程,我从使用映像路径切换到加载资源。我现在加载测试DICOM文件,如下所示:

    public static DicomFile RequestDicomFile(Resource resource)
    {
        //return DicomFile.Open(Reference.GetPath(resource));

        DicomFile result = null;
        var assembly = Assembly.GetExecutingAssembly();

        using (Stream stream = assembly.GetManifestResourceStream($"CommonTesting.Resources.{resource.ToString()}.dcm"))
        {
            result = DicomFile.Open(stream);
        }

        return result;
    }
这将返回一个DICOM文件,我可以访问相关的标签。然而,当我使用下面的(缩写)代码加载图像时,在渲染行上出现了一个异常:“无法从流读取-可能已关闭”

        DicomImage images; = new DicomImage(dicom.Dataset);
        if (images.NumberOfFrames > 0)
        {
            var imageData = images.RenderImage(0).As<Bitmap>();
            ...
        }
DicomImage图像;=新的dicom图像(dicom.Dataset);
如果(images.NumberOfFrames>0)
{
var imageData=images.RenderImage(0.As();
...
}
当我从文件路径(RequestDicomFile中注释掉的代码)打开DicomFile时,我能够访问渲染图像


有人知道为什么资源文件会发生这种情况吗?或者,有没有更好的方法来引用我的测试文件而不尝试将它们复制到Azure管道中的正确路径?

解决方案是在打开DICOM文件时完全读取流

result = DicomFile.Open(stream, FileReadOption.ReadAll);

是,因为您在调用DicomFile.Open后立即处理resourcestream。默认情况下,fo dicom仅加载头数据,仅在渲染时需要时加载像素数据。