我正在尝试使用Metadata Extractor dll从.tif文件中读取元数据,并且我不断收到FileIsNotFoundException。当我使用.jpeg文件尝试相同的代码时,它工作正常。
FileStream OriginalFile = new FileStream(FullPath, FileMode.Open, FileAccess.Read, FileShare.Read);
IEnumerable<MetadataExtractor.Directory> directories = ImageMetadataReader.ReadMetadata(OriginalFile);
foreach (var directory in directories)
foreach (var tag in directory.Tags)
Console.WriteLine($"{directory.Name} - {tag.Name} = {tag.Description}");
编辑:我重新安装了软件包,现在将XmpCore.dll放在我项目的packages文件夹中,但我仍然看到与以前相同的异常。适用于.jpeg和.psd文件。
答案 0 :(得分:0)
FileNotFoundException意味着您的FullPath不包含实际位于磁盘上的文件。
尝试添加:
Console.WriteLine(FullPath);
Console.WriteLine(File.Exists(FullPath));
还要仔细检查.tif和.tiff。
编辑您的屏幕截图显示丢失的文件为XmpCore.dll
。将NuGet引用添加到MetadataExtractor
后,您还应该选择XmpCore
。
以下是packages.config
:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MetadataExtractor" version="1.5.3" targetFramework="net45" />
<package id="SharpZipLib" version="0.86.0" targetFramework="net45" />
<package id="XmpCore" version="1.2.2" targetFramework="net45" />
</packages>
确保您还拥有相关的项目参考。
使用上述packages.config
构建新的.NET 4.5控制台项目后,bin/Debug
文件夹如下所示:
packages
文件夹的内容:
答案 1 :(得分:0)
I solved the exception by changing the Copy Local property to True for XmpCore under References in the Solution Explorer.