Domanda

Su una build di successo, desidero copiare il contenuto della directory di output in una posizione diversa nella stessa cartella " base " . Questa cartella principale è una parte relativa e può variare in base alle impostazioni del controllo del codice sorgente.

Ho elencato alcuni dei valori Macro disponibili per me ...

$ (SolutionDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ build

$ (ProjectDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ Version \ ProjectA \

Voglio copiare i contenuti di Output Dir nella seguente cartella:

D: \ GlobalDir \ Version \ NomeApp \ Solution2 \ Project \ Dipendenza

La posizione di base " D: \ GlobalDir \ Version \ AppName " deve essere recuperato da una delle macro sopra. Tuttavia, nessuno dei valori della macro elenca solo la posizione principale.

Come estraggo solo la posizione di base per il comando post build copy?

È stato utile?

Soluzione

Se nessuno dei TargetDir o altre macro puntano al posto giusto, usa il " .. " directory per tornare indietro nella gerarchia di cartelle.

es. Utilizzare $ (SolutionDir) \ .. \ .. per ottenere la directory di base.


Per l'elenco di tutte le macro, vedere qui:

http://msdn.microsoft.com/en-us/library/ c02as0cs.aspx

Altri suggerimenti

Ecco cosa vuoi inserire nella riga di comando dell'evento Post-build del progetto:

copy /Y "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)lib\$(ProjectName).dll"

MODIFICA: oppure se il tuo nome di destinazione è diverso dal Nome del progetto.

copy /Y "$(TargetDir)$(TargetName).dll" "$(SolutionDir)lib\$(TargetName).dll"

Potresti provare:

$(SolutionDir)..\..\

Penso che questo sia correlato, ma ho avuto un problema durante la creazione diretta utilizzando la riga di comando msbuild (da un file batch) rispetto alla costruzione dall'interno di VS.

Usando qualcosa di simile al seguente:

<PostBuildEvent>
  MOVE /Y "$(TargetDir)something.file1" "$(ProjectDir)something.file1"
  start XCOPY /Y /R "$(SolutionDir)SomeConsoleApp\bin\$(ConfigurationName)\*" "$(ProjectDir)App_Data\Consoles\SomeConsoleApp\"
</PostBuildEvent>

(nota: avvia XCOPY anziché XCOPY utilizzato per aggirare un problema di autorizzazioni che ha impedito la copia)

La macro $ (SolutionDir) valutata in .. \ durante l'esecuzione di msbuild da un file batch, che ha dato esito negativo nel comando XCOPY . In caso contrario, funzionava bene se creato da Visual Studio. Confermato con / verbosity: diagnostic per vedere l'output valutato.

Utilizzando invece la macro $ (ProjectDir) .. \ , che equivale alla stessa cosa, ha funzionato bene e ha mantenuto il percorso completo in entrambi gli scenari di compilazione.

Non avrebbe senso usare direttamente msbuild? Se lo stai facendo con ogni build, puoi aggiungere un'attività msbuild alla fine? Se vuoi solo vedere se non riesci a trovare un altro valore di macro che non è mostrato sull'IDE di Visual Studio, puoi attivare le opzioni di msbuild in diagnostica e che ti mostreranno tutte le variabili che potresti usare, come nonché il loro valore attuale.

Per attivarlo in Visual Studio, vai su Strumenti / Opzioni, quindi scorri verso il basso la vista ad albero fino alla sezione chiamata Progetti e soluzioni, espandila e fai clic su Crea ed esegui, a destra c'è un menu a discesa che specifica il costruire la verbosità dell'output, impostandola su diagnostica, ti mostrerà quali altri valori macro puoi usare.

Poiché non so bene fino a che livello vorresti arrivare e quanto complesso desideri che la tua build sia, questo potrebbe darti un'idea. Recentemente ho fatto script di build, che eseguono anche il codice SQL come parte della build. Se desideri un po 'più di aiuto o anche alcuni script di compilazione di esempio, fammi sapere, ma se è solo un piccolo processo che vuoi eseguire alla fine della compilazione, forse lo script completo di msbuild è un po' over kill .

Spero che sia d'aiuto Rihan

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top