用于访问 DOCX 中作者姓名的 C# 代码在 GetXDocument 上返回错误。 '不包含 'GetXDocument' 的定义

C# code to access author name in DOCX returning error on GetXDocument. 'does not contain a definition for 'GetXDocument'

我正在尝试调试 C# 代码以访问 DOCX 文件中的 'author' 属性。下面的方法正在传递一个代表 DOCX 文件的变量 'savePath'。 VS 不喜欢 GetXDocument 和 returns 错误:

DocumentFormat.OpenXml.Packaging.MainDocumentPart does not contain a definition for GetXDocument and no extension method GetXDocument.

我做错了什么?

    private void changeRevAuthor(string savePath)
    { 
        List<string> result = new List<string>();
        XNamespace w = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
        WordprocessingDocument wordDocument = WordprocessingDocument.Open(savePath, false);

        XDocument mainDocumentXDoc = wordDocument.MainDocumentPart.GetXDocument();

        var nodes = mainDocumentXDoc.Descendants().Where(x => x.Attributes(w + "author").Count() > 0).ToList();
        foreach (var node in nodes)
        {
            string authorname = node.Attribute(w + "author").Value;
            if (!result.Contains(authorname))
                result.Add(authorname);
        }
        wordDocument.Package.Close();
        return result;

    }

GetXDocumentOpenXML Powertools 库的一部分。 Nuget 并将其添加到您的解决方案中,您会很好。

nuget 添加 OpenXmlPowerTools 包后 - 导入以下命名空间

using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using OpenXmlPowerTools;

这已通过首先添加 OpenXmlPowerTools 并在项目 >(项目名称)属性 > 应用程序下将项目的 Target NET Framework 版本更改为 4.5 第二次得到解决

谢谢!!