【问题标题】:Passing dynamic references to Sandcastle Help File Builder将动态引用传递给 Sandcastle 帮助文件生成器
【发布时间】:2014-06-10 11:30:49
【问题描述】:

一段时间以来,我一直在使用Sandcastle Help File Builder 来生成文档——我现在正试图让它成为我们构建过程的一部分。我们的构建是使用 NAnt 控制的,每次构建时,输出都会发送到不同的位置(基于变更集编号,因此我们可以在没有冲突的情况下进行并发构建) - 即 dll 相对于源代码不在固定路径中.

我在 NAnt 脚本中添加了一个目标来调用 SHFB,它会调用 msbuild 任务,指向包含 SHFB 项目的解决方案:

<target name="GenerateDocumentation">
  <msbuild
    project="${SourceURL}\Documentation\API Documentation\APIs.sln"
    verbosity="Detailed">
    <property name="OutputPath" value="${OutputPath}Documentation" />
    <property name="ReferencePath" value="${OutputPath}wwwroot\\bin\\" />
  </msbuild>
</target>

我已经指定了 ReferencePath 属性,就像在this page 上一样,这似乎表明这将允许 SHFB 找到程序集并使用它们,而不是依赖于原始项目文件中的信息:

如果定义了ReferencePath属性,在生成反射信息时会传递给GenerateRefInfo.proj使用。这允许您指定备用路径,在该路径中查找将覆盖项目文件中的提示路径的引用程序集。

但是,当构建达到这一点时,它会失败并出现以下错误:

SHFB:错误 BE0040:项目程序集不存在:D:\Build\Debug\wwwroot\bin\MyAssembly.dll

原项目中指定的默认输出路径。

将程序集的位置传递到 SHFB 的正确机制是什么?

【问题讨论】:

标签: msbuild nant sandcastle shfb


【解决方案1】:

事实证明,使用 OutDir 而不是 ReferencePath 是要走的路:

<target name="GenerateDocumentation">
  <msbuild
    project="${SourceURL}\Documentation\API Documentation\APIs.sln"
    verbosity="Detailed">
    <property name="OutputPath" value="${OutputPath}Documentation" />
    <property name="OutDir" value="${OutputPath}wwwroot\bin\\" />
  </msbuild>
</target>

还要注意,OutDir 中指定的路径必须以双斜杠结尾,否则 MSBuild 会尝试将其与项目路径连接起来

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    相关资源
    最近更新 更多