doxygen未解析对同一C#命名空间中成员的@ref引用

doxygen未解析对同一C#命名空间中成员的@ref引用,c#,doxygen,ref,C#,Doxygen,Ref,首先,我应该说,我不是强氧剂专家,而且似乎在每次尝试使用它时都会学到一些新的技巧或技巧。然而,我遇到了一种情况,我对一些似乎非常基本的事情感到困惑,即创建@ref的方法 为了确保我没有重复已经报告过的东西,我搜索了其他的doxGEN报告的例子,“对于ReF命令,无法解决引用”,并且找到了与我所看到的类似的东西,但是C++。该特定问题在doxygen 1.8.6中被认为已修复 然而,我看到的特别问题是C。我也在使用doxygen 1.8.9.1 我将内容缩减为一个较短的示例,使用一个非常简单的ma

首先,我应该说,我不是强氧剂专家,而且似乎在每次尝试使用它时都会学到一些新的技巧或技巧。然而,我遇到了一种情况,我对一些似乎非常基本的事情感到困惑,即创建@ref的方法

为了确保我没有重复已经报告过的东西,我搜索了其他的doxGEN报告的例子,“对于ReF命令,无法解决引用”,并且找到了与我所看到的类似的东西,但是C++。该特定问题在doxygen 1.8.6中被认为已修复

然而,我看到的特别问题是C。我也在使用doxygen 1.8.9.1

我将内容缩减为一个较短的示例,使用一个非常简单的mainpage.cs和两个简单C#类中的完全合格成员@ref。这两个类位于同一命名空间中。我不知道它是否重要,但名称空间实际上有一个复合名称,即XXX.Reader\u接口,而不是像ReaderInterface这样的简单名称

但是,即使我用名称空间完全限定方法名,我仍然会得到doxygen警告:

C:/RefBug/Interface/mainpage.cs:26:警告:无法解析对\ref命令的
XXX.Reader\u Interface.Reader.GetAvailableReaders()的引用
C:/RefBug/Interface/mainpage.cs:31:警告:无法解析\ref命令对
XXX.Reader\u Interface.ReaderRef'的引用

My mainpage.cs:

/**
 * @file
 * 
 * @mainpage
 *
 * @tableofcontents
 *
 * @section intro  Introduction
 *
 * This document describes the Application Programming Interface (API) for
 * communicating with readers in the XXX Software system.

 * @section usingTheAPI Using the API
 *
 * This section describes a typical usage scenario for the API, along with the 
 * data sources and sinks and threads of execution.
 *
 * @subsection findingReaders   Finding Readers
 *
 * First, the application must be configured for (or figure out) what readers 
 * are available to be used by the system.  
 *
 * @subsubsection queryReaders Automatically Finding Readers
 *
 * One option to do this will be provided via the method 
 * @ref XXX.Reader_Interface.Reader.GetAvailableReaders() ,
 * which will use some kind of magic.  
 *
 * @subsubsection makeReader    Creating a Reader
 *
 * Instantiate a reader using a @ref XXX.Reader_Interface.ReaderRef.
 *
 * @defgroup abstractReader     What all Readers have in common
 */
一个C#文件Reader.cs:

/**
 * 
 * @file
 * 
 * @brief      Brief description of file/module.
 * @details    More detailed description of file/module.
 * @copyright  (c) 2015 Somebody, Incorporated.  All rights reserved.
 * 
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XXX.Instrument_Interface
{
    /// @ingroup abstractReader
    ///
    /// @brief  Abstract base class for a reader.
    ///
    /// <summary>
    /// Abstract base class to represent an reader with a serial interface.
    /// </summary>
    public abstract class Reader
    {
        /// <summary>
        /// Check each serial port to see if a reader is attached.
        /// </summary>
        /// <returns>
        /// Array of available readers.
        /// </returns>
        public static ReaderRef[] GetAvailableReaders()
        {
            return null;
        }

        /// <summary>
        /// Create an instance of a new reader, using an element of the list of 
        /// available readers as input.
        /// </summary>
        /// <param name="reader">
        /// One of the readers found attached to this PC.
        /// Obtained from the list provided by GetAvailableReader().
        /// </param>
        public Reader(ReaderRef reader)
        {
            throw new NotImplementedException();
        }
    }
}
/**
* 
*@file
* 
*@文件/模块的简要说明。
*@details文件/模块的更详细描述。
*@版权所有(c)2015年,法人。版权所有。
* 
*/
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
名称空间XXX.Instrument\u接口
{
///@ingroup abstractReader
///
///@读者的简短抽象基类。
///
/// 
///抽象基类,用串行接口表示读取器。
/// 
公共抽象类读取器
{
/// 
///检查每个串行端口,查看是否连接了读卡器。
/// 
/// 
///可用读卡器的数组。
/// 
公共静态ReaderRef[]GetAvailableReaders()
{
返回null;
}
/// 
///使用列表中的元素创建新读取器的实例
///可用的读者作为输入。
/// 
/// 
///找到的其中一个读卡器已连接到此电脑。
///从GetAvailableReader()提供的列表中获取。
/// 
公共阅读器(ReaderRef阅读器)
{
抛出新的NotImplementedException();
}
}
}
另一个C#文件ReaderRef.cs:

////////////////////////////////////////////////////////////////////////////////
/// 
/// @file
/// 
/// @brief      Brief description of file/module.
/// 
/// @details    More detailed description of file/module.
/// 
/// @copyright  (c) 2015 Somebody, Incorporated.  All rights reserved.
/// 
////////////////////////////////////////////////////////////////////////////////

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XXX.Instrument_Interface
{
    /// @ingroup abstractReader
    ///
    /// @brief  Reference to a reader.
    ///
    /// <summary>
    /// Reference to an reader connected to this PC.
    /// </summary>
    public class ReaderRef
    {
        /// <summary>
        /// Gets or sets the type of reader.
        /// </summary>
        public Type ReaderType
        {
            set;
            get;
        }

        /// <summary>
        /// Gets or sets a unique description for the reader.
        /// This should be unique to each reader, such as a serial number.
        /// </summary>
        public string Description
        {
            get;
            set;
        }

        /// <summary>
        /// Gets an instance of a specific reader based on the
        /// reader type.
        /// </summary>
        /// <returns>The reader if found, null otherwise.</returns>
        public Reader GetReader()
        {
            return null;
        }
    }
}
////////////////////////////////////////////////////////////////////////////////
/// 
///@file
/// 
///@文件/模块的简要说明。
/// 
///@details文件/模块的更详细描述。
/// 
///@版权所有(c)2015年,法人。版权所有。
/// 
////////////////////////////////////////////////////////////////////////////////
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
名称空间XXX.Instrument\u接口
{
///@ingroup abstractReader
///
///@向读者简要介绍。
///
/// 
///连接到此电脑的读卡器的引用。
/// 
公共类ReaderRef
{
/// 
///获取或设置读取器的类型。
/// 
公共类型读取器类型
{
设置
得到;
}
/// 
///获取或设置读取器的唯一描述。
///这对于每个读卡器都应该是唯一的,例如序列号。
/// 
公共字符串描述
{
得到;
设置
}
/// 
///获取基于的特定读取器的实例
///读卡器类型。
/// 
///如果找到读取器,则为null。
公共阅读器GetReader()
{
返回null;
}
}
}
这是一个bug,还是我以一种不正确的方式使用了doxygen?我希望有人能告诉我为什么doxygen不能解析这些引用。我也很乐意上传一个包含整个示例的.zip文件,供任何想尝试它的人使用


提前感谢您的帮助和耐心

对不起,这是一个非常简单、愚蠢的错误。我创建的引用与命名空间说明符不匹配,因此doxygen当然无法解析它。退一步重新检查代码后,我立即找到了它。很抱歉让电子邮件流量变得混乱,感谢您的耐心等待