una ruta resueltos proyectos programacion pert metodo method libre holguras holgura empresa ejemplos ejemplo critical critica calculo path include directory nant

path - ruta - programacion de proyectos pdf



NAnt: cómo obtener la ruta del directorio del script incluido (2)

Eché un vistazo al código fuente de NAnt. Desafortunadamente, lo que desea lograr no es factible con una función existente o personalizada. NAnt agrega el archivo incluido a su estructura de proyecto, y mientras Project tiene una LocationMap para recuperar el nombre de archivo del que llegó el nodo, está marcado como internal , por lo que ni siquiera se puede extraer con un script. Puede optar por una solución alternativa, como asumir una ubicación constante de su archivo en relación con el script maestro (y caminar desde allí) o crear una versión personalizada de NAnt con una función que exponga la funcionalidad que necesita. La primera solución no es bonita, la segunda no es fácil.

Tengo un script NAnt común (que contiene algunos objetivos y constantes comunes) que incluyo en muchos otros scripts NAnt como este:

<include buildfile="<path>/common.build" verbose="true" />

Los guiones de llamada se encuentran en varias carpetas.

En este script incluido, necesito leer un archivo del mismo directorio, donde reside el script incluido. El "directorio actual" está configurado en el directorio del script de llamada, no incluido. ¿Cómo puedo obtener la ruta del directorio del script incluido?

Si utilizo la siguiente construcción (dentro de la secuencia de comandos incluida):

${ path::get-directory-name(project::get-buildfile-path()) }

luego obtengo la ruta de la carpeta de la secuencia de comandos de llamada, en lugar de la secuencia de comandos incluida.

¿Hay alguna forma de obtener la ruta del script incluido dentro de él?

Saludos, Ivan.


Mi sugerencia: defina la ruta al archivo de script llamado en una propiedad dentro del script de llamada de esta manera:

<property name="include.buildfile.path" value="C:/foo/common.build" /> <include buildfile="${include.buildfile.path}" verbose="true" />

En el script común accedes a la ruta de directorio deseada de esta manera:

${path::get-directory-name(include.buildfile.path)}