Wpis z mikrobloga

Próbuję wykorzystać polecenie xcopy jako Post-Build event w Visual Studio by przekopiować binarki po buildzie (z bin/Debug) do folderu w Progam Files jak niżej:

xcopy "$(TargetDir)" "C:\Program Files (x86)\Submitters\SAP Demo"
ale dostaję komunikat "The command "xcopy .... "" exited with code 4 w Output window: "Invalid path".

Ma ktoś pomysł dlaczego?

Edit #1 Visual Studio chodzi jako administrator

#programowanie #visualstudio
  • 12
  • Odpowiedz
@FNwsk: nie

Syntax
xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-yyyy]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:file1[+[file2]][+[file3]] [{/y|/-y}] [/z]

@paprok:
tak działa, pewnie dlatego że $(TargetDir) to jest makro VIsual Studio, które zwraca ściezkę do "bin/Debug", gdybym zamiast tego makro dodał ścieżkę z palca to też zadziała.
  • Odpowiedz
@markaron: aaa czekaj czekaj...

zwraca ściezkę do "bin/Debug"

jeżeli katalog bieżący jest nieznany to może ścieżka powinna być absolutna (pełna) zamiast względna?

jak to nie to, to nie mam więcej pomysłów ( ͡° ʖ̯ ͡°)
  • Odpowiedz
@markaron:
xcopy "$(ProjectDir)Library\dsoframer.ocx" "$(TargetDir)" /Y /E /D1
- z pierwszego googla o xcopy return 4
- a jeszcze u Ciebie są spacje w ścieżce trzeba je backslashem potraktować
  • Odpowiedz
@piotrb: @paprok: @FNwsk:

Okazuje się koledzy, że marko $(TargetDir) zwraca ścieżkę zakończoną backslashem jak niżej:

`D:\Foo\Bar\bin\Debug`

I ten ostatni backslash jest problemem dla polecenia xcopy. Podanie xcopy ścieżki nie zakończonej backslashem powoduje bezbłędne wykonanie polecenia.

Aby rozwiązać ten problem w VS w oknie Post-build event command line należy użyć gwiazdki za nazwą makra w ten sposób:

xcopy "$(TargetDir)*" "C:\Program Files (x86)\SAP Demo\" /e /y /r
Co ciekawe średnik
  • Odpowiedz