Odpowiedz

30

Tak, dodając do niego wywołanie w edytorze zdarzeń po kompilacji.

Jeśli przejdziesz do strony Właściwości projektu, powinieneś wybrać zakładkę Tworzenie zdarzeń. Możesz wpisać wezwanie do pliku wsadowego w polu tekstowym Post-build event command line.

Jeśli chcesz zapoznać się z pliku wsadowego z wykorzystaniem ścieżek zawartych w projekcie lub roztworu, można kliknąć na Edit Post-budowy ... przycisku. Spowoduje to otwarcie okna dialogowego po kompilacji zdarzenia.

To okno dialogowe ma przycisk MacOS >> , który można kliknąć. Pokaże on wszystkie dostępne makra, których można użyć w odniesieniu do folderów i plików w ramach rozwiązania.

Po wybraniu jednego z tych makr można użyć przycisku Wstawianie, aby wstawić je do skryptu.

+0

+1 ale dla uzupełnienia komentarz divo komentarz do odpowiedzi Jona Skeeta na ponowne użycie makr do określenia ścieżek dla specyficznych dla projektu plików wsadowych . – AAT

+1

Odpowiedź, o której mowa powyżej, już nie istnieje. Ścieżka komentarza to Q. "W jaki sposób nadać plikowi wsadowemu ścieżkę?" a komentarzem w odpowiedzi był A. "Możesz użyć albo użyć zakodowanej ścieżki, albo - lepiej - użyć zmiennych dostępnych po kliknięciu przycisku" Makra ". Na przykład" $ (ProjectDir) "(bez cytuje) będzie katalogiem, w którym znajduje się plik projektu Visual Studio " –

+0

Jak to zrobić dla całego rozwiązania zamiast pojedynczego projektu? –

8

Oprócz wywoływania pliku .bat można również wprowadzać polecenia wsadowe (tj. Zwykłe polecenia dostępne z konsoli Windows - cmd.exe) bezpośrednio w polach Przed budowaniem/Post-budowaniem. Może to być lepsze, ponieważ oznacza to, że nie musisz oddzielnie utrzymywać pliku wsadowego, ponieważ wszystkie twoje polecenia będą częścią projektu.

92

Jasne, oto przykład:

call "$(SolutionDir)scripts\copyifnewer.bat" "$(SolutionDir)libs\RLPL.Services.CertificateValidator.Basic.dll" "$(TargetDir)RLPL.Services.CertificateValidator.Basic.dll" 
call "$(SolutionDir)scripts\copyifnewer.bat" "$(SolutionDir)libs\RLPL.Services.CertificateValidator.Common.dll" "$(TargetDir)RLPL.Services.CertificateValidator.Common.dll" 

Wystarczy mieć świadomość z 2 możliwych problemów możesz mieć:
1) otaczające cudzysłowy podwójne (Patrz Jak każda część jest otoczona " znaku)
2) jeśli chcesz wywołać 2 lub więcej plików wsadowych, upewnij się, że używasz polecenia call. W przeciwnym razie nie będziesz w stanie znaleźć przyczyny, dla której drugi nietoperz nie wykonuje swojej pracy

+12

dziękuję za uwagę na temat "połączenia", rozwiązuje to mój problem przy wielokrotnym wykonywaniu. – EvgeniyK

+2

Mimo że SO prosi mnie teraz o wyjaśnienie mojej wdzięczności: +1 za punkt 2) – slater

+1

Może zaistnieć potrzeba zmiany katalogu bieżącego, ponieważ domyślnie jest uruchamiany w folderze 'Bin'. Musiałem uruchomić w katalogu rozwiązania, więc dla mnie było to: 'call cd $ (SolutionDir)' jako pierwsza linia w zdarzeniach po kompilacji. –

Powiązane problemy