微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用.NET Core读取扩展文件属性

如何解决使用.NET Core读取扩展文件属性

我正在尝试将.NET Framework应用程序移植到.NET Core。该应用程序读取文件的扩展属性,就像在“文件资源管理器”中右键单击文件时可以看到的一样:

enter image description here

在我的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代码

enter image description here

我需要在.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 举报,一经查实,本站将立刻删除。