0

ドキュメントを生成するためにSandcastle Help File Builderをしばらく使用してきました。現在、それをビルド プロセスの一部にしようとしています。私たちのビルドは NAnt を使用して制御され、ビルドされるたびに出力が別の場所に送信されます (変更セット番号に基づいているため、衝突することなく同時ビルドを行うことができます)。つまり、dll はソース コードに関連する固定パスにありません。 .

NAnt スクリプトにターゲットを追加して SHFB を呼び出し、SHFB プロジェクトを含むソリューションを指定して msbuild タスクを呼び出します。

<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

ReferencePath の代わりに OutDir を使用するのがよい方法であることがわかります。

<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 に答える