【问题标题】:Adding an XML Documentation Comment file for a school project in Visual Code (C#)在 Visual Code (C#) 中为学校项目添加 XML 文档注释文件
【发布时间】:2018-10-23 09:38:09
【问题描述】:

我做了一个学校项目,我的老师稍后会检查。

我正在尝试借助 plugin 在 Visual Studio Code 中添加一些文档注释,它允许我编写 /// 自动生成 xml 代码。

我从Microsoft Docs 中读到了关于 XML 文档的内容,您可以制作一个单独的 XML 文件,而不是用 cmets 将代码弄得乱七八糟,但我一直很难让它工作。

这是一个例子:

 ///<include file='docs.xml' path='docs/members[@name="program"]/Select/*'/>
        public static bool Select (ConsoleKey input) {
            ConsoleKeyInfo key = Console.ReadKey (true);
            if (key.Key == input) {
                return true;

            }
            return false;
        }

这是 doc.xml 文件中关于此方法的内容:

 <doc>
  <members name="program">
    <Select>
        <summary>
        Summarizes a way to detect <paramref name ="input"/>.
        </summary>
        <returns>
        true when <paramref name = "input"/> is detected. 
        </returns>
        <param name="input"> Checks what key it should detect.</param>
        <example>
        <code>

            string outputToConsole = "Hello World!";
            void Main () {
                if (Selecting.Select (ConsoleKey.Spacebar)) {
                   Console.WriteLine (outputToConsole);
          //Prints "Hello World" when key "Spacebar" is pressed!
                }
            }

        </code>
      </example>
    </Select>

它目前不起作用(它根本没有显示关于方法的描述),我一直在为此绞尽脑汁。

【问题讨论】:

  • 通常 VS 会创建一个与程序集同名的 xml 文件,该文件包含代码中的所有文档。此文件包含前面带有/// 的每条评论。所以我不明白您对该文件的实际问题是什么?它不会生成吗?它包含什么?
  • 我的问题是,尽管在方法旁边添加了&lt;include&gt; 标签,但没有关于该方法的文档。另外,我正在使用 Visual Studio Code!不是 Visual Studio。
  • 从该站点我无法判断代码是否支持此功能。但是基础应该由编译器完成并且应该可以工作。
  • “不起作用(它没有显示方法的描述......” - 首先要检查的是它是否生成了其他 xml 文件。看看你是否得到compile with: -doc:DocFileName.xml 正确。
  • 但是重新考虑一下:这个功能的原因是单独维护('check out'),这真的是个问题吗?我会去混乱。 Ctrl+O+M 整齐地折叠起来。

标签: c# xml xml-parsing visual-studio-code


【解决方案1】:

文档说(强调我的):

这是将文档 cmets 直接放在源代码文件中的替代方法。 通过将文档放在单独的文件中,您可以将源代码控制与源代码分开应用到文档。一个人可以签出源代码文件,其他人可以签出文档文件。

我确实理解这背后的动机,但是如果您决定使用单独的文件,您将无法再使用 Visual Studio 自动完成/智能感知为您生成 XML 元素,您需要学习架构/XML 文档文件的语法

此外,随着程序集变大,XML 文件也会变大。在现实世界中,这个文件可能有 1000 行代码。从维护和源代码控制的角度来看,我宁愿将文档放在 c# 源文件中。老实说,我认为这不值得麻烦。

无论如何,如果您仍想使用外部文件,您可以使用一些技巧。

考虑一个名为FileDemo 的类库。右击项目 > Properties > Build 然后勾选复选框XML Documentation File

这将在构建时生成 XML 文档文件:

现在是有趣的部分。正如我之前提到的,XML 文档文件具有您需要学习的特定语法。最好的方法是将一些 XML 文档添加到现有的类、方法等并检查生成的 XML。例如,考虑以下命名空间和类:

命名空间文件演示

namespace FileDemo
{
    /// <summary>
    /// This is a class
    /// </summary>
    public class Class1
    {
        /// <summary>
        /// Does nothing
        /// </summary>
        /// <param name="text">Just some text</param>
        public void DoNothing(string text)
        {

        }
    }

        /// <summary>
    /// This is another class
    /// </summary>
    public class Class2
    {
        /// <summary>
        /// Bla bla
        /// </summary>
        /// <param name="text">Just some text</param>
        public void DoSomething(string text)
        {

        }
    }
}

命名空间 FileDemo.AnotherNamespace

namespace FileDemo.AnotherNamespace
{
    /// <summary>
    /// Yet another class
    /// </summary>
    public class Class3
    {
        /// <summary>
        /// Gets or sets something
        /// </summary>
        public string Foo { get; set; }

        /// <summary>
        /// Creates a new instance of <see cref="Class3"/>
        /// </summary>
        public Class3()
        {

        }

        /// <summary>
        /// This method is supposed to calculate something
        /// </summary>
        /// <param name="firstValue">First value</param>
        /// <param name="secondValue">Second value</param>
        /// <returns>The result of the calculation</returns>
        public int Calculate(int firstValue, int secondValue)
        {
            return 1;
        }
    }
}

构建项目后,生成的文档文件如下:

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>FileDemo</name>
    </assembly>
    <members>
        <member name="T:FileDemo.AnotherNamespace.Class3">
            <summary>
            Yet another class
            </summary>
        </member>
        <member name="P:FileDemo.AnotherNamespace.Class3.Foo">
            <summary>
            Gets or sets something
            </summary>
        </member>
        <member name="M:FileDemo.AnotherNamespace.Class3.#ctor">
            <summary>
            Creates a new instance of <see cref="T:FileDemo.AnotherNamespace.Class3"/>
            </summary>
        </member>
        <member name="M:FileDemo.AnotherNamespace.Class3.Calculate(System.Int32,System.Int32)">
            <summary>
            This method is supposed to calculate something
            </summary>
            <param name="firstValue">First value</param>
            <param name="secondValue">Second value</param>
            <returns>The result of the calculation</returns>
        </member>
        <member name="T:FileDemo.Class1">
            <summary>
            This is a class
            </summary>
        </member>
        <member name="M:FileDemo.Class1.DoNothing(System.String)">
            <summary>
            Does nothing
            </summary>
            <param name="text">Just some text</param>
        </member>
        <member name="T:FileDemo.Class2">
            <summary>
            This is another class
            </summary>
        </member>
        <member name="M:FileDemo.Class2.DoSomething(System.String)">
            <summary>
            Bla bla
            </summary>
            <param name="text">Just some text</param>
        </member>
    </members>
</doc>

如您所见,您需要为尝试记录的每个元素(类、方法、属性、构造函数、参数、返回类型等)学习特定的架构/语法。

【讨论】:

  • 好吧便便。感谢您提供的信息,它对我正在处理的事情有所了解。这确实给了我一个想法。由于我有 Visual Studio 和 Visual Code,如果我曾经在 Visual Code 中创建项目,我不能只在 Visual Studio 中打开项目,然后使用相同的 XML 文件构建它吗?
  • @SpyrotheA.L.D 不确定,TBH 我从未使用过 Visual Code。我的建议是:省去一些麻烦,在代码中添加 XML 文档,而不是在外部文件中——除非你的老师要求你使用外部文件!
  • 我的老师不介意我有代码文档。我解释了为什么我想要一个单独的文件作为我的文档的原因,他理解我的动机。他说他要去看看。现在,我要把我的大部分文档放在我的代码中,这样至少可以理解。 :)
  • 是的,有一个单独的文件进行维护的意图是好的,但是'通往地狱的道路是由善意铺成的':-) 老实说,文档很容易过时,而且更容易询问添加或更改代码以立即在他正在处理的同一源代码中添加/更新文档的开发人员,而不必编辑包含程序集完整文档的大型 XML 文件。
  • 我只记得另一个不使用单独的 XML 文件的好理由 - 随着程序集变得越来越大,XML 文件也会变得越来越大。我的示例文件只有 53 行,但在现实世界中,该文件将有 1000 行代码。从维护和源代码控制的角度来看,我宁愿更改 c# 源文件中的文档
猜你喜欢
  • 2011-05-02
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 2014-07-02
  • 2012-05-22
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多