C# TagLib Sharp-重新标记文件

C# TagLib Sharp-重新标记文件,c#,mp3,taglib-sharp,C#,Mp3,Taglib Sharp,我将要创建一个小工具,它可以重新创建我的mp3文件上的所有标签。 因为它们乱七八糟,我想删除所有标记并用正确的值重新创建它们 这样做我遇到了一个问题,我无法设置标签值。 但问题是,我无法设置标签。我有以下代码: File tagLibFile = File.Create(filePath); tagLibFile.RemoveTags(TagLib.TagTypes.AllTags); tagLibFile.Tag.Album = album; tagLibFile.Tag.AlbumArtis

我将要创建一个小工具,它可以重新创建我的mp3文件上的所有标签。 因为它们乱七八糟,我想删除所有标记并用正确的值重新创建它们

这样做我遇到了一个问题,我无法设置标签值。 但问题是,我无法设置标签。我有以下代码:

File tagLibFile = File.Create(filePath);
tagLibFile.RemoveTags(TagLib.TagTypes.AllTags);
tagLibFile.Tag.Album = album;
tagLibFile.Tag.AlbumArtists = artists.ToArray();
tagLibFile.Tag.Track = track;
tagLibFile.Tag.Title = title;
tagLibFile.Tag.TitleSort = titleSort;
...
tagLibFile.Save();
文件已正确读取。然后标签被移除。 但在那之后,设置标签就不起作用了。标记内的字符串仍然为空。 我还没有见过像“tagLibFile.SetTag(tagt)”这样的方法。标记只能作为getter使用,不能作为setter使用

在那之后,我添加了一些帧,但是没有设置标签的效果。也许我用错了? 希望你能帮我解决这个问题

亲切问候,


SyLuS

我猜在删除标记后,TagLib#(或者TagLib,就这一点而言)不会创建一个新的标记来保存信息。但是,当打开一个文件时,它可能会进行一些检查,如果文件没有,它会创建一个新的标记

因此,作为一种解决方法,您可以在删除标记后保存文件一次,然后继续添加新的标记信息

File tagLibFile = File.Create(filePath);
tagLibFile.RemoveTags(TagLib.TagTypes.AllTags);
// Save the file once, so that Taglib Sharp takes care of creating any necessary tags when opening the file next time and dispose the file reference:
tagLibFile.Save();
tagLibFile.Dispose();
然后,您可以继续编辑标记,就像再次打开文件后所做的那样:

tagLibFile = File.Create(filePath);
tagLibFile.Tag.Album = album;
tagLibFile.Tag.AlbumArtists = artists.ToArray();
tagLibFile.Tag.Track = track;
tagLibFile.Tag.Title = title;
tagLibFile.Tag.TitleSort = titleSort;
// ...
编辑完标记后,请记住再次保存文件:

tagLibFile.Save();
我希望这有帮助。如果您还有任何疑问,或者上述代码仍然无法使用,请随时发表评论。:)