在.net xmldoc注释中引用嵌入式资源的正确方法是什么?

时间:2009-09-01 16:50:46

标签: .net embedded-resource sandcastle xml-documentation

我有一个使用xml comments的C#项目。我使用Sandcastle通过Sandcastle Help File Builder从他们那里制作chm文件。该项目中的一个成员函数使用embedded resource。我想在帮助文件中引用它。似乎sandcastle不支持这个,但它解析的xml文档文件。我这样说是因为以下例子

/// <summary>
/// Displays the resource text.
/// </summary>
/// <remarks>The file is loaded from the <see cref="Resources.TextFile.txt"/>.</remarks>
private static void ShowResource()
{
    // Getting text from embedded resource
}

如果我编译该代码并从生成的xml文档中编译chm,我会在构建日志中获得以下内容:

  Warn: CachedResolveReferenceLinksComponent: Unknown reference link target '!:Resources.HelpTextFile.txt'.

备注部分是:

The help file is loaded from the [!:Resources.TextFile.txt].

如果Agent SmithReSharper建议并将&lt; see /&gt; 元素更改为<see cref="Resources.TextFile"/>,则构建日志会显示:

Warn: CachedResolveReferenceLinksComponent: Unknown reference link target 'P:ProjectName.Properties.Resources.TextFile'.

chm的备注部分变为:

The help file is loaded from the HelpTextFile().

所以我的问题是两部分:

  1. 我是否使用&lt; see /&gt; 元素来引用资源?
  2. 有没有办法让sandcastle引用它生成的chm文件中的嵌入式资源?

1 个答案:

答案 0 :(得分:3)

您可以使用HTML锚标记来获得相同的结果。这就像使用&lt; img&gt;引用图像文件一样标记在XML注释中。

/// The resources are loaded from
/// <a href="../Resources.TextFile.txt">Resources.TextFile.txt</a>.

将资源文件包含为项目中的内容项。上面的例子假设它在根文件夹中。 HTML文件始终位于./html文件夹中,因此需要上升一级。如果将文件放在根文件夹下的子文件夹中,请将其名称添加到href目标:“../ FolderName / Resources.TextFile.txt”。

如果您已应用Sandcastle样式补丁,则可以在&lt; see&gt;上使用href属性而不是cref属性。标签。文件位置信息将是相同的。

/// The resources are loaded from
/// <see href="../Resources.TextFile.txt" />.

埃里克