2011-10-24 9 views
8

estoy usando el constructor castillo de arena Archivo de ayuda a la salida de mi C# archivo XML-DOC al formato de página web. ¿Cómo puedo lograr lo mismo desde la línea de comandos para poder agregar esto como un evento de compilación en Visual Studio al compilar el proyecto real?Construir castillo de arena cuando se construye Documentación Visual Studio Proyecto

¡El fin es hacer que el contenido del sitio web Archivo de ayuda construí cuando construyo el proyecto de Visual Studio.

Respuesta

9

Como se indica a Scott Wylie, es necesario especificar esto en la línea de comandos del evento posterior acumulación en las propiedades del proyecto de Visual Studio. Sin embargo, sugeriría usar Sandcastle Help File Builder (SHFB) en lugar de Sandcastle directamente. Esto hace que la llamada de línea de comandos corta y simple como se muestra a continuación, pero tenga en cuenta que primero hay que configurar el proyecto SHFB con el SHFB interfaz gráfica de usuario, que crea un fichero de construcción compatible con msbuild con el ".shfbproj" sufijo:

 
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
     /p:Configuration=Release myProject.shfbproj 

Sin embargo, cabe destacar que tomo el camino contrario de lo que está haciendo: en lugar de utilizar Visual Studio para poner en marcha de forma interactiva una acumulación y acciones auxiliares, utilizo hormiga (Nant) para poner en marcha una acumulación de todo, que incluye mis soluciones de Visual Studio y la acción posterior de SHFB. Así que esto es realmente la llamada de línea de comandos hago para construir la documentación con el castillo de arena:

<exec executable="${msbuild}" dir="${csharpdoc}" output="${csharpdoc.log}"> 
    <arg value="/p:Configuration=Release"/> 
    <arg value="myProject.shfbproj"/> 
</exec> 

Mi preferencia es que toda la construcción debe ser iniciar desde la línea de comandos para que no haya interacciones requeridas (por ejemplo, poniendo en marcha Visual Studio , etc.) Eso proporciona la flexibilidad de ejecutarse como una tarea recurrente programada o bajo demanda desde el shell.

+1

Por lo tanto, como se menciona en un comentario sobre otra respuesta, como un evento Post-Build en las propiedades normales de compilación de Visual Studio, agregué el comando para compilar el archivo SHFBPROJ con MSBuild (similar a lo que publicó en el primer fragmento de código). Sin embargo, al ejecutar la compilación, comenzó más de 1000 instancias de MSBuild.exe en el administrador de tareas y se bloqueó. ¿Alguna idea de por qué? –

+0

BTW, la compilación cuando uso el Creador de Ayuda para compilarlo en lugar de MSBuild, demora unos 2 minutos. Agregarlo a la compilación de publicaciones se ejecutó durante más de una hora al 100% de utilización de la CPU hasta que finalmente lo maté. –

+0

@JohnChapman: ¿A qué se refiere ese "Creador de ayuda"? ¿Es algo incluido en el paquete SHFB? –

0

Si está utilizando MSBuild para su herramienta de construcción esta es la tutorial utilicé un tiempo atrás.

También hay una secuencia de comandos en codeplex que puede utilizar con el que podría ayudarle.

Espero que esto ayude!

+0

Esto parece que se utiliza para TFS construye. ¿Cómo haría esto en una compilación de proyecto normal? –

1

Puede llamar a SandCastle desde la línea de comando de evento de compilación posterior, en la sección Eventos de compilación de las propiedades de su proyecto. Esto debería funcionar bien si no está utilizando ninguna herramienta de compilación automatizada.

+0

técnicamente si edita sus eventos de compilación en la ventana de propiedades está utilizando la herramienta de compilación automatizada MSBuild. Solo quería aclarar. – ajrawson

+0

¿Cómo haría esto específicamente? Encontré una manera de llamar a MSBuild contra el archivo de proyecto de Sandcastle, sin embargo, comienza más de 1000 procesos separados de MSBuild y bloquea la computadora (no hace eso cuando se construye desde la GUI). –

0

Me pareció más fácil simplemente agregar el proyecto * .shfbproj a la solución. Se construye muy bien (aunque un poco lenta) en el interior de VS 2010.

+0

No puedo agregar el archivo shfbproj en VS2013. (No tengo la extensión SHFB instalada, ya que puede contaminar el objetivo de compilación de la solución). – user2864740

Cuestiones relacionadas