Mam projekt ze zdarzeniem po kompilacji:
copy $(ProjectDir)DbVerse\Lunaverse.DbVerse.*.exe $(TargetDir)
Działa dobrze za każdym razem na moim komputerze. Mam nowego programistę, któremu zawsze pojawia się błąd „Zakończono z kodem 1”. Kazałem jej uruchomić to samo polecenie w wierszu poleceń DOS i działało dobrze. Co może być tego przyczyną? Czy jest jakiś sposób, aby dojść do prawdziwego błędu?
Oboje używamy Visual Studio 2008.
visual-studio-2008
post-build
Tim Scott
źródło
źródło
Odpowiedzi:
Miała spację w jednej z nazw folderów na swojej ścieżce i nie było wokół niej cudzysłowów.
źródło
Ten z „pingami” pomógł mi ... ale można to wyjaśnić trochę lepiej ...
Dla mnie rozwiązaniem była zmiana:
do tego:
Mam nadzieję, że to działa dla Ciebie. :-)
źródło
Dodałem to dla przyszłych gości, ponieważ jest to dość aktywne pytanie.
ROBOCOPY kończy pracę z „kodami sukcesu” poniżej 8. Zobacz: http://support.microsoft.com/kb/954404
To znaczy że:
Więc rozwiązałem to łatwo, dodając to na dole pliku wsadowego
Zaproponuj, aby w ten sposób obsłużyć błędy ROBOCOPY
Zamieszanie pojawi się, gdy żadne pliki nie zostaną skopiowane = brak błędu w VS. Potem, gdy są zmiany, pliki są kopiowane, błędy VS, ale wszystko, czego chciał programista, zostało zrobione.
Dodatkowa wskazówka: nie używaj pauzy w skrypcie, ponieważ stałoby się to nieokreśloną przerwą w kompilacji VS. podczas tworzenia skryptu użyj czegoś takiego jak
timeout 10
. Zauważysz to i raczej skomentujesz, niż będziesz miał wiszącą konstrukcję.źródło
Mój powód dla Code 1 był taki, że folder docelowy był tylko do odczytu. Mam nadzieję, że to komuś pomoże! Miałem zdarzenie po kompilacji, aby wykonać kopię z jednego katalogu do drugiego, a miejsce docelowe było tylko do odczytu. Więc po prostu usunąłem zaznaczenie atrybutu tylko do odczytu w katalogu i wszystkich jego podkatalogach! Po prostu upewnij się, że jest to bezpieczny katalog!
źródło
Pobierz monitor procesu od SysInternals, ustaw go tak, aby obserwować, czy Lunaverse.DbVerse (w polu Path) patrzy na wynik operacji. Stamtąd powinno być oczywiste, co poszło nie tak
źródło
Musiałem uruchomić VS jako administrator, aby moja kopia po kompilacji do chronionego systemu operacyjnego „.. \ Common7 \ IDE \ PrivateAssemblies” działała
źródło
Dla tych, którzy korzystają z „ kopii ” polecenie Build Events ( linii poleceń Pre-build zdarzeń i / lub wiersza poleceń Post-build zdarzeń ) z Project -> Properties : ty „ skopiować ” parametry polecenia powinna wyglądać tutaj:
copy "source of files" "destination for files"
. Pamiętaj, aby używać cudzysłowów (aby uniknąć problemów ze spacjami w ciągach adresów).źródło
Miałem podobny problem, ale szczególnie w środowisku kompilacji Jenkins. Aby rozwiązać ten problem, przełączyłem się z używania polecenia copy w zdarzeniu po kompilacji na używanie celu kopiowania.
Zmieniłem to:
do tego:
i teraz działa dobrze.
Konkretny błąd, który otrzymałem, to:
źródło
Udało mi się naprawić mój kod 1, uruchamiając program Visual Studio jako administrator. Najwyraźniej nie miał dostępu do wykonywania poleceń powłoki bez administratora.
źródło
W ramach dobrej praktyki sugeruję zastąpienie zdarzenia po kompilacji zadaniem MS Build File Copy .
źródło
Musiałem się upewnić, że program, do którego kopiowałem plik, nie działa w tym czasie. W składni nie było żadnych błędów. Mam nadzieję, że to komuś pomoże.
źródło
Właśnie otrzymałem ten sam błąd. Miałem% na ścieżce docelowej, z którego trzeba było uciec
musiał być
źródło
Ok, to jest problem z wieloma rozwiązaniami, więc po prostu publikuję swoje, aby dać ludziom więcej wskazówek. Moja sytuacja polega na podwójnym sprawdzeniu folderów na twojej ścieżce i upewnieniu się, że wszystkie istnieją na twoim komputerze. Na przykład: „$ (SolutionDir) \ partBin \ Bin \ $ (ProjectName) .pdb”, ale „Bin” nie znajduje się w folderze partBin.
źródło
$(SolutionDir)
jest zbędne.Dla tych, którzy używają polecenia `` kopiuj '' w zdarzeniach kompilacji (wiersz poleceń zdarzenia przed kompilacją lub / lub wiersz poleceń zdarzenia po kompilacji) z poziomu Projekt -> Właściwości: folder docelowy powinien istnieć
źródło
Tyle rozwiązań ...
W moim przypadku musiałem zapisać plik bat z kodowaniem innym niż Unicode (Western, Windows). Domyślnie, kiedy dodałem plik do Visual Studio (i prawdopodobnie powinienem był to zrobić poza VS), dodano go z kodowaniem UTF-8.
źródło
Miałem ten sam problem i okazało się, że to dlatego, że zmieniłem nazwę projektu. Wszedłem do właściwości projektu i zmieniłem nazwę zespołu i główną przestrzeń nazw na nazwę projektu i po tym działało świetnie!
źródło
Jeszcze inna odpowiedź ...
W moim przypadku miałem projekt Visual Studio 2017 przeznaczony zarówno dla .Net Standard 1.3, jak i .Net Framework 2.0. Zostało to określone w pliku .csproj w następujący sposób:
Miałem również wiersz poleceń po kompilacji, taki jak ten:
Innymi słowy, próbowałem skopiować plik .Net Framework .dll utworzony przez kompilację do alternatywnej lokalizacji.
To kończyło się niepowodzeniem z powodu tego błędu, gdy wykonałem przebudowę:
Po wielu frustracjach w końcu ustaliłem, że dzieje się tak, że Rebuild usunęło wszystkie pliki wyjściowe, a następnie wykonałem kompilację dla .Net Standard 1.3, a następnie spróbowałem uruchomić wiersz poleceń zdarzenia po kompilacji, co nie powiodło się, ponieważ plik do skopiowania nie został jeszcze zbudowany.
Rozwiązaniem była więc zmiana kolejności budowania, tj. Najpierw zbuduj dla .Net Framework 2.0, a potem dla .Net Standard 1.3.
Teraz to działa, z drobną usterką polegającą na tym, że wiersz poleceń zdarzenia po kompilacji jest uruchamiany dwukrotnie, więc plik jest kopiowany dwukrotnie.
źródło
W moim przypadku musiałem
cd
(zmienić katalog) przed wywołaniem pliku bat, ponieważ wewnątrz pliku bat była operacja kopiowania, która określała ścieżki względne.źródło