【问题标题】:Do xml comments persist in release mode?xml 注释是否在发布模式下持续存在?
【发布时间】:2013-04-26 13:33:09
【问题描述】:

一方面MSDN 说:

XML doc cmets 不是元数据;它们不包括在 编译的程序集...

但另一方面,Intellisense 在 Visual Studio 中为 .net 类等显示它们(例如,如果您将鼠标悬停在 Int32 上。)

为了避免误解:我指的是这些:

/// <summary>
/// These comments.
/// </summary>
void example()
{
    //Not these.
}

【问题讨论】:

标签: c# .net xml-comments


【解决方案1】:

当您将代码编译为 IL 时,不会删除这些内容。...将您的代码编译为 DLL 或 exe,然后使用工具 ILDasm 打开它。您会注意到您的 cmets 不包括在内。然后,您可以使用 Reflector 之类的工具反编译您的代码,然后再次看到您的 cmets 消失了。 ILDasm 和 Reflector 是您应该熟悉的好工具。

【讨论】:

  • 谢谢。那么它们是如何存在于 .net 类中的呢?
  • 如果您查看框架文件夹,您有一个 &lt;assemblyname&gt;.xml 对应每个 &lt;assemblyname&gt;.dll,用于显示信息
  • @V4Vendetta 谢谢。所以我的问题变成了——“将使用 dll 创建 XML 文件吗?”我没有看到正在创建一个。但我现在才听说这件事,所以我想确定一下。
  • @ispiro 我猜在项目构建属性中,您可以选择生成文档 xml
  • @V4Vendetta 完美。我在那里看到。 (您可以将其转换为答案。绝对值得一票。谢谢。)
【解决方案2】:

XML 文档文件与程序集的 DLL 是分开的。它们只是 UTF8 XML 文件。如果它们恰好与它们记录的 DLL 位于同一个文件夹中,那么 Visual Studio 会选择它们。

编译时,构建过程会自动将 XML 文件复制到构建输出文件夹中(如果存在)。

XML 文档的任何内容都不会被放入任何 DLL 中。

如果您查看框架 DLL 文件(例如在“C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0”中),您接下来会看到大量的“.xml”文件给他们。

【讨论】:

  • 谢谢。那么你的意思是 .net dll 在他们的文件夹中有他们的 XML 文件?
  • 好的。不在dll中。但它会以 XML 文件的形式存在吗?
  • 我假设您回答了我的第一条评论。对吗?
  • @ispiro 是的,我是。至于你的第二个问题,“它会持续下去”是什么意思? XML 文件只有在您删除它们时才会消失。当然,如果您将所有 DLL 文件复制到一个新文件夹而不复制 XML 文件,那么 XML 文件将不会在新文件夹中(这很明显)。它们只是普通文件。
  • a) 感谢您的耐心等待。 b) 我的意思是 - 我编译我的应用程序并使用 Visual Studio (ClickOnce) 发布它 - 是否会创建和发布 XML? (我刚试过,它似乎没有被创建。但我是新手,所以我想确定一下。)
猜你喜欢
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 2020-07-11
  • 1970-01-01
  • 2022-12-22
  • 2019-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多