Domanda

In Nant, vorrei essere in grado di estrarre il cognome della directory in un percorso.
Ad esempio, abbiamo il percorso 'c: \ my_proj \ source \ test.my_dll \'

Vorrei passare in quel percorso ed estrarre 'test.my_dll'

C'è un modo per farlo facilmente?

È stato utile?

Soluzione

Vedi l'attività script . Puoi scrivere codice personalizzato in C # o altro e restituire un valore che puoi assegnare a una proprietà.

Altri suggerimenti

Puoi effettivamente farlo con le funzioni di stringa NAnt esistenti. Solo un po 'brutto ...

${string::substring(path, string::last-index-of(path, '\') + 1, string::get-length(path) - string::last-index-of(path, '\') - 1)}

È possibile trovare la directory principale del proprio percorso e quindi utilizzare stringa di sostituzione per trovare la cartella che si sta cercando:

<property name="some.dir" value="c:\my_proj\source\test.my_dll" />
<property name="some.dir.parent" value="${directory::get-parent-directory(some.dir)}" />
<property name="directory" value="${string::replace(some.dir, some.dir.parent + '\', '') }" />

Potresti provare la nuova funzione aggiunta a nant 0.93 (comunque nelle build notturne) -

:: get-nome (percorso)

Questo restituirebbe il nome della directory menzionata nel path .

Consultare nant help

No. Dovrai scrivere un'attività personalizzata per qualcosa del genere.

Espandendo su Steve K:

<script language="C#" prefix="path" >
    <code>
        <![CDATA[
          [Function("get-dir-name")]
          public static string GetDirName(string path) {
              return System.IO.Path.GetFileName(path);
          }
        ]]>
    </code>
 </script>

<target name="build">
    <foreach item="Folder" in="." property="path">
        <echo message="${path::get-dir-name(path)}" />
    </foreach>
</target>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top