如何解决使用.NET Core读取扩展文件属性
我正在尝试将.NET Framework应用程序移植到.NET Core。该应用程序读取文件的扩展属性,就像在“文件资源管理器”中右键单击文件时可以看到的一样:
在我的4.7.2 Framework应用程序中,代码如下所示:
using Microsoft.WindowsAPICodePack.Shell;
var shellFile = ShellFile.FromFilePath(file.FullName);
var title = shellFile.Properties.System.Title.Value;
var albumTitle = shellFile.Properties.System.Music.AlbumTitle.Value;
我的项目引用了这样的Shell代码:
我需要在.NET Core应用程序中做什么才能访问Microsoft.WindowsAPICodePack.Shell的代码?还是.NET Core提供了另一种读取这些文件属性的方法?
在将此问题标记为重复之前
我知道已经问过类似的问题: Obtaining file extended properties in .Net Core
但是,这个问题是3年前的.NET Core很小的时候问的。 2个答案未解释如何读取文件的扩展属性。似乎回答的人们不理解扩展文件属性与从FileInfo
可以得到的文件属性之间的区别。也许这个问题还不够清楚?我还希望.NET Core能够得到足够的改进,以使此类旧功能可以再次使用。
解决方法
我不认为这些是文件属性。我猜这是MP3
元数据存储在ID3
标记中。
您正在使用可以读取此类元数据的.NET Framework NuGet软件包WindowsAPICodePack-Shell
。
选项#1
我找不到原始软件包的.NET Core版本。
但是我发现该库的一个非官方的.NET Core分叉:Microsoft-WindowsAPICodePack-Shell
(它不是Microsoft编写的 )。
选项#2
对于.NET Core,您可以安装TagLibSharp
NuGet软件包。
然后您就可以像这样读取元数据:
var file = new FileInfo("track.mp3");
var tagLibFile = TagLib.File.Create(file.Name);
var title = tagLibFile.Tag.Title;
var album = tagLibFile.Tag.Album;
var albumArtist = tagLibFile.Tag.AlbumArtists;
var genres = tagLibFile.Tag.JoinedGenres;
var length = tagLibFile.Properties.Duration;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。