Po udanej kompilacji chcę skopiować zawartość katalogu wyjściowego do innej lokalizacji w tym samym folderze „podstawowym” . Ten folder nadrzędny jest częścią względną i może się różnić w zależności od ustawień Kontroli źródła.
Wymieniłem kilka dostępnych dla mnie wartości makr ...
$ (SolutionDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ build
$ (ProjectDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ Version \ ProjectA \
Chcę skopiować zawartość Output Dir do następującego folderu:
D: \ GlobalDir \ Version \ AppName \ Solution2 \ Project \ Dependency
Podstawową lokalizację „D: \ GlobalDir \ Version \ AppName” należy pobrać z jednego z powyższych makr. Żadna z wartości makr nie zawiera jednak tylko lokalizacji nadrzędnej.
Jak wyodrębnić tylko lokalizację podstawową dla polecenia kopiowania po kompilacji?
Oto, co chcesz umieścić w wierszu polecenia Zdarzenie po kompilacji projektu:
EDYCJA: Lub jeśli nazwa docelowa jest inna niż nazwa projektu.
źródło
/Y
. Dzięki za pokazanie całego polecenia.xcopy
symboli wieloznacznych i odpowiednich przełączników, aby osiągnąć podobny wynik, zachowując jednocześnie strukturę folderu (drzewa) źródłowego, na przykład:xcopy /i /e /s /y /f "<source>\MyFolder\*" "<destination>\MyFolder"
copy /Y "$(TargetPath)" "$(SolutionDir)somewhere\"
bez dodatkowego ukośnika odwrotnego, ponieważ $ (SolutionDir) zawiera ukośnik końcowy (przynajmniej w VS2012)Możesz spróbować:
źródło
Myślę, że jest to powiązane, ale miałem problem podczas budowania bezpośrednio przy użyciu
msbuild
wiersza polecenia (z pliku wsadowego) vs budowanie z poziomu VS.Korzystanie z czegoś takiego:
(uwaga:
start XCOPY
zamiastXCOPY
ominąć problem z uprawnieniami, który uniemożliwił kopiowanie)Makro
$(SolutionDir)
obliczane..\
podczas wykonywania msbuild z pliku wsadowego, co spowodowałoXCOPY
niepowodzenie polecenia. W przeciwnym razie działało dobrze, gdy zostało zbudowane z Visual Studio. Potwierdzono za pomocą,/verbosity:diagnostic
aby zobaczyć oszacowane dane wyjściowe.$(ProjectDir)..\
Zamiast tego użycie makra , co oznacza to samo, działało dobrze i zachowało pełną ścieżkę w obu scenariuszach kompilacji.źródło
Start
pracował dla mnie (xcopy
w folderze udostępnionym).Czy nie ma sensu bezpośrednio używać msbuild? Jeśli robisz to przy każdej kompilacji, możesz dodać zadanie msbuild na końcu? Jeśli chcesz tylko sprawdzić, czy nie możesz znaleźć innej wartości makra, która nie jest wyświetlana w programie Visual Studio IDE, możesz włączyć opcje msbuild do diagnostyki, która pokaże wszystkie zmienne, których możesz użyć, ponieważ jak również ich aktualna wartość.
Aby włączyć to w Visual Studio, przejdź do Narzędzia / Opcje, a następnie przewiń widok drzewa do sekcji o nazwie Projekty i rozwiązania, rozwiń to i kliknij Kompiluj i uruchom, po prawej stronie znajduje się lista rozwijana określająca szczegółowość wyników kompilacji , ustawienie tego na diagnostyczne pokaże, jakich innych wartości makr można użyć.
Ponieważ nie do końca wiem, do jakiego poziomu chciałbyś przejść i jak skomplikowana powinna być twoja kompilacja, może to dać ci pewien pomysł. Ostatnio robiłem skrypty kompilacji, które nawet wykonują kod SQL jako część kompilacji. Jeśli potrzebujesz dodatkowej pomocy lub nawet przykładowych skryptów kompilacji, daj mi znać, ale jeśli jest to tylko mały proces, który chcesz uruchomić na końcu kompilacji, być może przejście pełnego skryptu msbuild jest trochę przesadzone .
Mam nadzieję, że to pomoże Rihan
źródło