在何种情况下,<;见>;Delphi xml注释中的标记实际起作用了吗?

在何种情况下,<;见>;Delphi xml注释中的标记实际起作用了吗?,delphi,xml-comments,xml-documentation,Delphi,Xml Comments,Xml Documentation,我想知道这些XML引用是如何工作的,我只是不明白它们为什么工作或者为什么不工作,我对此一无所知 下面是一个例子: type TOuterClass= class strict private type TLogger = class public /// <summary>adds a log entry</summary> /// <param name="Msg">text to lo

我想知道这些XML引用是如何工作的,我只是不明白它们为什么工作或者为什么不工作,我对此一无所知

下面是一个例子:

type
  TOuterClass= class
  strict private
    type
      TLogger = class
      public
        /// <summary>adds a log entry</summary>
        /// <param name="Msg">text to log</param>
        procedure Log(const Msg: string);
      end;
  strict private
    FLogger: TLogger;
  public
    /// <summary>adds a log entry</summary>
    /// <param name="Msg">text to log</param>
    /// <remarks>just calls <see cref="TOuterClass.TLogger.Log" />
    /// </remarks>
    procedure Log(const Msg: string);

    property Logger: TLogger read FLogger;
  end;
类型
TOuterClass=类
严格保密
类型
TLogger=类
公众的
///添加一个日志条目
///要记录的文本
过程日志(const Msg:string);
结束;
严格保密
弗洛格:特洛格;
公众的
///添加一个日志条目
///要记录的文本
///只是打电话
/// 
过程日志(const Msg:string);
属性记录器:TLogger read FLogger;
结束;
TOuterClass.Log注释中的链接不起作用。Delphi XE5只是考虑了一下,然后放弃了

另一个非常简单的例子:

Unit MyUnit

type
  /// <summary>MyType Comment</summary>
  TMyType = reference to procedure;

/// <param name="MyTypeParam"><see cref="MyUnit.TMyType" /></param>
procedure MyProcedure(MyTypeParam: TMyType);
unitmyunit
类型
///MyType注释
TMyType=程序参考;
/// 
程序MyProcedure(MyTypeParam:TMyType);
同样,这个链接不起作用。有趣的是:如果您只是注释掉xml注释,那么Delphi会自动创建相同的链接文本(“MyUnit.TMyType”),并且它可以工作!那真让我困惑

这些链接到底可以链接到什么,我必须遵循哪些约定才能使其正常工作,它们不能链接到什么

在这一点上,报告相当简短:

<see> Reference to a specific type, symbol, or identifier
对特定类型、符号或标识符的引用 如果它有任何重要意义的话:我正在使用DelphiXe5,但是我希望您能给我一些提示,告诉我这在任何版本的Delphi上是如何工作的。我甚至很欣赏一些链接的例子,这些链接实际上是有效的(请包括您的Delphi版本),也许这会有助于揭示其背后的机制

2014年8月25日编辑:


我开始认为这些链接链接到实际的html文档文件,在我的例子中,这些文件并不存在,因为我没有为它们定义目录。我只是在DelphiIDE中做XML注释以获得提示。有人能证实这一点吗?

不确定这是否仍然是一个问题,但我知道在XE3中,您可以使用|字符进行反向引用

范例

Unit MyUnit

type
  /// <summary>MyType Comment</summary>
  TMyType = reference to procedure;

  /// <param name="MyTypeParam"><see cref="MyUnit|TMyType" /></param>
  procedure MyProcedure(MyTypeParam: TMyType);

以下内容适用于我的XE8

///这是我的过程
///链接文本
程序MyProcedure(MyTypeParam:TMyType);

它可能只支持本地引用。试着让DocInsight的人参与进来:他们似乎知道这一切应该如何运作。这是一个很好的观点,但我如何让DocInsight的人参与进来呢?Ping(:@BaoQuanzoo(编辑:嗯:那@not work)@RSE-。不幸的是Ping。所以这不是获得[BaoQuanzoo]的方式涉及。问题仍然存在,我只是暂时忽略了它,产生了不起作用的xml注释…所以我将在周一尝试并报告。该语法根本不起作用,它会产生一个警告:“关于'OnOpsChanged'的W1206注释具有无法解决的cref属性'TcmSyncBlogger | endi'此语法确实适用于Delphi XE3中的代码洞察。不过它确实产生了警告。这在Delphi 10.1 Berlin中运行良好,但没有产生所述警告。已确认。在Delphi 10.1 upd 2中对我有效
unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  /// <summary>MyType Comment</summary>
  TMyType = reference to procedure;

  /// <summary>This is MyProcedure</summary>
  /// <param name="MyTypeParam"><see cref="Unit2|TMyType" /></param>
  procedure MyProcedure(MyTypeParam: TMyType);

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);
begin
 //Call MyProcedure
 MyProcedure(nil);
end;

end.