【问题标题】:Website project: want to generate XML documentation on build网站项目:想在构建时生成 XML 文档
【发布时间】:2015-09-18 16:12:52
【问题描述】:

出于遗留原因,我正在维护一个网站项目,我想为其提供来自 XML 文档 cmets 的最新文档。我想我可以通过调整web.config 中的<compilers> 部分来做到这一点。我终于达到了这一点:

  <system.codedom>
    <compilers>
      <compiler
        language="c#;cs;csharp"
        extension=".cs"
        type="Microsoft.CSharp.CSharpCodeProvider"
        compilerOptions="/optimize /doc:C:\temp\my-output-here.xml"
        warningLevel="1" />
    </compilers>
  </system.codedom>

现在,当我启动网站时(并因此调用即时编译),我确实在请求的位置获得了一个 XML 文件,但它是最小的:

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>App_global.asax.abqhzva4</name>
    </assembly>
    <members>
    </members>
</doc>

似乎&lt;compiler&gt; 标签并不能完全满足我的要求。它必须为项目文件夹本身而不是.cs 文件生成XML,或者它被每个编译单元覆盖,我只看到最后一个微不足道的,或者......我不知道。我不知道。这个配置标签没有很好的记录。

长话短说,我正在寻找一种方法来获取此网站项目中所有 .cs 文件的 XML 文档。无论是全部在一个文件中,还是在单独的文件中,甚至在运行时都被塞进内存中,都没有关系。

我是aware of the prior question,但那里提供的链接已被重定向到 Sandcastle 网站。这很棒,但它比我在这个项目上实际使用的要多得多。只需在构建时或运行时获取 XML 文档即可。

然后我的问题是:我需要做什么才能获得 &lt;compiler&gt; 配置条目来为网站项目生成 XML 文档?

【问题讨论】:

    标签: visual-studio-2012 web-site-project xml-documentation


    【解决方案1】:

    我也有一个丑陋的解决方法......但是就这样!

    1. 从此页面下载最新的 Sandcastle 安装程序 - https://github.com/EWSoftware/SHFB/releases

    2.解压并运行安装程序

    3.EWSoftware.CodeDom.dll 复制到您网站的\bin 目录中。该文件的默认位置是-C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\Extras\EWSoftware.CodeDom.dll

    4.修改web.config如下:

    <configuration>
      <system.codedom>
        <compilers>
          <compiler language="c#;cs;csharp" extension=".cs"
            compilerOptions="/docpath:C:\Publish\Docs"
            type="EWSoftware.CodeDom.CSharpCodeProviderWithDocs, EWSoftware.CodeDom"
          >
            <!-- NOTE: Change version value as needed (v3.5, v4.0, etc.) -->
            <providerOption name="CompilerVersion" value="v4.0"/>
          </compiler>
        </compilers>
      </system.codedom>
    </configuration>
    

    来源:http://ewsoftware.github.io/EWSoftwareCodeDom/html/40ba6bda-95d6-4a64-834f-f7cedcb589d1.htm

    5. 重建您的解决方案,瞧!使用/docpath 选项指定的文件夹将包含您的 XML 文档。

    【讨论】:

    • 我喜欢这个!当然,这意味着安装所有 Sandcastle,但结果是维护成本很低。不错。
    • 谢谢:)。我有一种预感,每个目录都是通过对 csc.exe 的新调用构建的。使用您的原始技术,在构建每个文件夹时,输出 XML 文件会覆盖前一个文件夹的 XML 文件。因此,您看到的只是最后一个编译文件夹的 XML 文件。因此需要 Sandcastle 编译器,它为每个文件夹提供一个唯一命名的 XML 文件。
    • 或者每个文件都调用了 csc.exe?关键是如果进行了多个调用,您需要一种方法来为每个调用指定一个目标 XML 文件。
    猜你喜欢
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    相关资源
    最近更新 更多