我一直在使用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 的正确机制是什么?