我正在尝试使用 Taglib-sharp 更新标签/发布者字段,但我无法使用对象浏览器在其对象层次结构中的任何位置看到它。
我已经通过 google 和文档进行了搜索,看起来这是一个不适合的领域。
在我寻找可以编辑这些字段的替代方案(任何人都可以提出任何建议吗?)之前,我想我会做最后一次尝试并在 StackOverflow 社区中询问熟悉 TagLib-sharp 的人,他们有更明智的意见?
提前致谢
弗朗西斯
更新:我调查了其他库,例如 mpg123 和 UltraID3Lib,但它们似乎具有相同的限制。
最佳答案
嗯,Daniel Fuchs 的回答对我不起作用。但是,这是一个开始。
在TagLib-sharp代码中添加字段的步骤是:
下载Source
打开文件 TagLib/Tag.cs 并插入以下代码(我将其插入到 PerformersSort 的第 250 行下方):
public virtual string Publisher { get { return ""; } set { } }
打开文件 TagLib/Id3v2/Tag.cs 并插入以下代码(我将其插入到 PerformersSort 的第 1292 行下方):
public override string Publisher { get { return GetTextAsString(FrameType.TPUB); } set { SetTextFrame(FrameType.TPUB, value); } }
打开文件 TagLib/Id3v2/FrameTypes.cs 并插入以下代码(我将其插入到 TPOS 第 71 行下方):
public static readonly ReadOnlyByteVector TPUB = "TPUB";
“啊哈”来了。打开文件 TagLib/CombinedTag.cs 并插入以下代码(我将其插入到 PerformersSort 的第 318 行下方):
public override string Publisher { get { foreach (Tag tag in tags) { if (tag == null) continue; string value = tag.Publisher; if (value != null) return value; } return null; } set { foreach (Tag tag in tags) if (tag != null) tag.Publisher = value; } }
最后,编译代码。
重要:我在编译代码时也遇到了问题。您必须下载 SharpZipLib dll (.NET 2.0) 并将此 dll 包含在 taglib 项目中。另外,我需要安装我用 Nuget 制作的 NUnit。最后,我在测试代码中注释了 GDK 库及其所有错误,因为在生产中不会使用它。
关于c# - taglib-sharp 中是否有与 Label/Publisher 等效的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13361102/