0

我一直在使用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 属性,就像在这个页面上一样,它似乎表明这将允许 SHFB 找到程序集并使用它们,而不是依赖于原始项目文件中的信息:

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

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

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

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

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

4

1 回答 1

0

事实证明,使用 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 会尝试将其与项目路径连接起来

于 2014-06-11T08:47:26.773 回答