使用 .NET Core 读取扩展文件属性
Reading extended file properties with .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 已经有了足够的改进,可以再次使用这些遗留功能。
我不认为这些是文件属性。我猜,它是存储在 ID3
标签中的 MP3
元数据。
您正在使用可以读取此类元数据的 .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;
我正在尝试将 .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 已经有了足够的改进,可以再次使用这些遗留功能。
我不认为这些是文件属性。我猜,它是存储在 ID3
标签中的 MP3
元数据。
您正在使用可以读取此类元数据的 .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;