Mam webforms
aplikację C # , która do dziś działała po prostu płynnie.
Teraz nagle, za każdym razem, gdy próbuję uruchomić aplikację, pojawia się błąd blokowania pliku:
Nie można skopiować pliku „obj \ Debug \ MyProject.exe” do „bin \ Debug \ MyProject.exe”. Proces nie może uzyskać dostępu do pliku „bin \ Debug \ MyProject.exe”, ponieważ jest używany przez inny proces.
Wygooglowanie błędu nie prowadzi do niczego poza oczywistym, tj. VS uważa, że plik jest zablokowany. I zdecydowanie to Visual Studio blokuje plik, ponieważ kiedy zamykam VS i otwieram go ponownie, projekt wykonuje się dobrze - za pierwszym razem. Kiedy próbuję uruchomić go po raz drugi, pojawia się błąd blokowania pliku.
Zamykanie VS i ponowne otwieranie za każdym razem, gdy chcę uruchomić aplikację, nie jest wykonalnym obejściem! Jak dowiedzieć się, co blokuje plik, i zapobiec jego zablokowaniu?
EDYCJA: Kolejne interesujące odkrycie: nie muszę nawet uruchamiać aplikacji. Skompilowanie go tylko raz powoduje zablokowanie pliku; Nie mogę skompilować dwa razy z rzędu!
Ten problem jest specyficzny dla jednego projektu w moim rozwiązaniu. Wszystkie inne projekty działają dobrze i można je wykonywać tyle razy, ile chcę. Tylko ten jeden projekt zostaje zamknięty.
źródło
Odpowiedzi:
Znalazłem proste rozwiązanie, które mi odpowiada. To wygląda tak:
Gdy wystąpi problem, po prostu zmień konfigurację budowania u góry (jeśli jest w „Wydanie” na „Debuguj” i odwrotnie), skompiluj, a następnie wróć do poprzedniej konfiguracji i ponownie zbuduj.
Przypuszczam, że zmiana konfiguracji zwalnia vcshost i devenv.
źródło
Cóż, sam rozwiązałem problem - chociaż nadal nie mam pojęcia, dlaczego. Postanowiłem wyizolować problem, usuwając wszystkie pliki z projektu, a następnie ponownie je dodając i określając w ten sposób, który plik był źródłem moich problemów. Tak więc, jeden po drugim, ponownie wprowadzałem pliki do projektu, kompilowałem i czyściłem na każdym etapie ... aż ... dodałem ostatni ...
... i wszystko nadal działało dobrze.
Porównałem z kontrolą źródła mojego oryginalnego pliku .csproj; żadnych prawdziwych różnic. I nawet gdy próbowałem wrócić do poprzedniej wersji pliku .csproj, nadal działało.
Czarna magia. Jeśli to zadziała, czasami lepiej nie pytać dlaczego - po prostu zaakceptuj i przejdź dalej ...
EDYCJA: Problem powtarza się i wydaje mi się, że wyodrębniłem go, gdy w czasie kompilacji otwieram projektanta formularzy w postaci abstrakcyjnej / ogólnej.
Wyciągnięta lekcja: upewnij się, że projektant formularzy wszelkich abstrakcyjnych lub ogólnych formularzy lub kontrolek jest zamknięty przed kompilacją! Jeśli nie, musisz zamknąć VS i ponownie otworzyć!
źródło
Odkryliśmy tutaj, co następuje: Na stronie właściwości projektu, na karcie Debuguj, usuń zaznaczenie opcji „Włącz proces hostingu Visual Studio”. Nie jestem pewien, do czego służy ta właściwość, ale działa po usunięciu zaznaczenia.
źródło
Właściwie powinieneś zaznaczyć opcję „Włącz proces hostingu programu Visual Studio”. Przynajmniej dla VS2010. Mam też:
jeśli istnieje "$ (Ścieżka docelowa) .locked" del "$ (Ścieżka docelowa) .locked" jeśli istnieje "$ (Ścieżka docelowa)" jeśli nie istnieje "$ (Ścieżka Docelowa) .locked" move "$ (Ścieżka Docelowa)" "$ (Ścieżka Docelowa) .zablokowany"
w opcjach przed kompilacją. Ten problem nęka mnie od bardzo dawna i dopiero gdy John W. wspomniał o tym polu wyboru, zwróciłem nawet uwagę, że istnieje i jest niskie, i oto było już odznaczone.
Należy również zauważyć, że -app-vshost.exe działa w tle, nawet jeśli nie jest debugowane. I to sprawia, że z powodzeniem buduje się i uruchamia za każdym razem. Wcześniej nie działało. Próbowałem też wyczyścić foldery debugowania i zwalniania oraz stale zmieniać typ docelowy i nic nie działało poza opisanymi powyżej. Wcześniej moim rozwiązaniem było odczekanie 5 minut między kompilacjami, co było bardzo denerwujące i czasochłonne, aby cokolwiek zrobić. Nie widziałem żadnej zmiany w zachowaniu, w którym liczyło się to, które karty są otwarte, XNA kontra okno lub projektanci są otwierani. Ten problem wystąpił w kompilacjach 32-bitowych lub 64-bitowych i nie miał znaczenia, czy zabiłem aplikację za pomocą ALT-F4, czy zabiłem ją za pomocą menedżera zadań, co teoretycznie nie pozwoliłoby aplikacji na zamknięcie lub zwolnienie zasobów. Na początku myślałem, że to kwestia usuwania śmieci.
źródło
VS2017 - rozwiązany przez zamknięcie wszystkich wystąpień programu MSBuild.exe w menedżerze zadań systemu Windows
źródło
Trochę późno na odpowiedź, ale rozwiązuję ten problem, przechodząc do właściwości projektu> zakładka „Debuguj”> odznacz „Włącz proces hostingu Visual Studio”.
źródło
Pokonałem ten problem, zmieniając nazwę zablokowanego pliku (za pomocą Eksploratora Windows). Nie pozwolono mi usunąć pliku, ale zmiana nazwy zablokowanego pliku działa!
źródło
Rozwiązałem to, usuwając folder bin \ Debug i prawdopodobnie ponownie uruchamiając VS
źródło
Dla mnie była to usługa Windows, która została zainstalowana i uruchomiona. Kiedy go zatrzymałem, kompilacja się powiodła.
źródło
Uruchom to polecenie z pola Uruchom:
i wtedy
pracował dla mnie. w porównaniu z 2003 r
źródło
Niedawno napotkałem ten problem podczas próby zbudowania rozwiązania, nad którym pracuję (nie tylko projektu WinForms).
Oprócz
build
niepowodzenia zauważyłem, że czyszczenie projektów po cichu kończyło się niepowodzeniem (sprawdzenie folderu bin pokazało, że pliki faktycznie nie zostały usunięte), a zamknięcie programu Visual Studio nie zakończyłodevenv
procesu - raczej spowodowało awarię. Proces odzyskiwania systemu Windows ponownie uruchomiłby program Visual Studio.Po kilku próbach i błędach stwierdziłem, że problemy przytrafiły mi się tylko wtedy, gdy otworzyłem rozwiązanie z menu „Ostatnie” podczas uruchamiania VS.
Otwieranie rozwiązania z
File >> Open >> Project/Solution
okazało się, że działa jak zwykle.Obecnie nie mam pojęcia dlaczego - będę dalej się tym zajmować, ale na razie przynajmniej mogę pracować!
źródło
Po prostu sprawdź odniesienia i usuń odniesienie do projektu.
Wyjaśnienie: Mój problem zaczął się po utworzeniu kontrolki niestandardowej i przeciągnięciu jej i upuszczeniu na palecie przybornika w celu użycia jej w formularzach projektowych. Najpierw pojawiło się ostrzeżenie informujące, że istnieje nadmiarowość między niestandardowym plikiem źródłowym kontroli (.cs) a plikiem wykonywalnym projektu (.exe). Podczas wykonywania / debugowania pojawił się błąd: nie można uzyskać dostępu do (.exe), ponieważ jest używany (i to prawda).
Dosłownie usunąłem cały kod źródłowy dotyczący niestandardowej kontroli i problem nadal występował, dopóki nie sprawdziłem referencji i odwoływał się do siebie, aby móc uzyskać poprzednią niestandardową kontrolę. Usunąłem odniesienie i gotowe !!
źródło
Miałem ten sam problem z moją aplikacją Xamarin w programie Visual Studio i został on rozwiązany przez odłączenie testowego urządzenia mobilnego. Aplikacja została zamknięta, a debugger zatrzymany, ale błąd nadal występował podczas próby zbudowania lub odbudowania rozwiązania. Zatrzymał się dopiero po odłączeniu urządzenia, ponieważ musiałem odebrać połączenie.
źródło
Tylko po to, żeby dorzucić moje 2 centy. Mój problem został rozwiązany przez otwarcie Menedżera zadań i zabicie aplikacji. Działał w tle bez żadnego wskazania, że w ogóle działa (brak pozycji na pasku zadań, brak interfejsu użytkownika, nic), ale nie jestem pewien, dlaczego tak się stało. Oczywiście debugger nie działał i miałem wtedy tylko jedną instancję VS. Zdumiewa mnie, że tak się dzieje nadal w tym VS 2017.
Być może mogę dodać krok kompilacji, który szuka aplikacji działającej w tle i zabija ją przed uruchomieniem nowej.
źródło
Miałem ten sam problem i nie mogłem go naprawić za pomocą żadnej z metod wymienionych w poprzednich odpowiedziach. Rozwiązałem problem, zabijając wszystkie wystąpienia „Historia debugowania SSIS (32-bitowe)” w menedżerze zadań i teraz działam normalnie.
źródło
Usunięcie folderu Obj, retail i debug projektu .NET i ponowne kompilowanie ponownie zadziałało.
źródło
Jak skonfigurowana jest Twoja aplikacja internetowa? Czy działa pod Cassini (serwer sieciowy zasobnika) lub IIS?
To nie powinno jednak zdarzyć się normalnie. Myślę, że ProcessExplorer może powiedzieć, jakie pliki zablokował proces. Jeśli nie, eksplorator procesu, jedno z pozostałych narzędzi sysinternals.
Jedną z rzeczy, które należy wypróbować przed pobraniem jednego z narzędzi SI, jest zatrzymanie serwera internetowego Cassini i sprawdzenie, czy to zwolni plik.
źródło
U mnie zadziałało ponowne uruchomienie usług IIS
źródło
ja też miałem ten sam problem. zmiana konfiguracji debugowania / wydania nie załatwiła sprawy. przynajmniej nie bez budowania pomiędzy.
w moim rozwiązaniu (winform) zostało to rozwiązane poprzez otwarcie w projektancie głównego formularza winform. przełączenie na kod (F7). Następnie zamykamy kod, zamykamy projektanta winform i przebudowujemy wszystko (ctrl-shift-B). To zadziałało dla mnie.
wygląda na to, że jakiś uchwyt z aplikacji winform (która uruchamia program w tle) nadal miał uchwyt do pliku w niektórych innych używanych bibliotekach.
źródło
Miałem dwa wystąpienia Visual Studio, które otworzyły to samo rozwiązanie.
źródło
W moim przypadku działało kilka procesów vstest (o różnych nazwach, ale wszystkie zawierają ciąg vstest). Musiałem je zakończyć w taskmgr.
źródło
Ten sam błąd rozwiązany przez aktualizację pakietów wsparcia Google Nuget
źródło
Kiedy zakończyłem proces
.Net Core Host
, wszystko poszło dobrze. Nie musiałem zamykać programu Visual Studio ani niczego zmieniać.źródło
Dla tych, którzy rozwijają się w VS z Dockerem, uruchom ponownie Docker dla usługi Windows, a problem zostanie natychmiast rozwiązany.
Przed ponownym uruchomieniem dockera wypróbowałem wszystkie wymienione odpowiedzi, nie znalazłem uruchomionego procesu msbuild.exe, próbowałem również zrestartować VS bez skutku, działało tylko ponowne uruchomienie dockera.
źródło
Jeszcze jedno rozwiązanie: kiedy pliki zostaną zablokowane, zgłaszany jest proces blokowania (coś w rodzaju „ServiceHub.Host.CLR.x64 (7764)”) z identyfikatorem w nawiasach. Aby pozbyć się tego procesu, otwórz PowerShell (x + Win + I) i wpisz: „Stop-Process -Id idNumber”.
źródło
Niedawno napotkałem problem podczas wdrażania w sieci szkieletowej usług. Błąd sugeruje, że „plik” jest używany, jednak okazało się, że port był używany przez inne IDE. Zatrzymując działającą usługę, która była już hostowana na porcie, mogłem zatrzymać ten wyjątek.
źródło
Miałem ten sam problem. Wypróbowałem kilka rozwiązań wymienionych powyżej, ale nie działają one dla mnie.
Rozwiązałem ten problem, zamykając połączenie z Eksploratora serwera i zamykając wszystkie karty, które były otwarte w programie Visual Studio.
źródło
Jeśli jest to projekt SSIS, otwórz menedżera zadań i zabij wszystkie wystąpienia DtsDebugHost.exe, które powinny zwolnić zablokowane pliki.
źródło
Używam Visual Studio Code i otrzymałem ten błąd, ponieważ serwer deweloperski był uruchomiony (uruchomiłem serwer deweloperski, naciskając
Ctrl + F5
).Tak więc po prostu kliknąłem znak stop, aby go zatrzymać, a błąd zniknął.
źródło
Miałem ten problem (i to problem, który widziałem w innych miejscach, nie tylko VS).
Jest to spowodowane przez Dropbox (w moim przypadku). Po edycji kodu i uruchomieniu polecenia dropbox czasami natychmiast blokuje plik (aby mógł go przetworzyć).
Rozwiązanie 1. Po prostu naciśnij ponownie Uruchom
Rozwiązanie 2. Wstrzymaj skrzynkę referencyjną. (nie dobrze, jeśli używasz Dropbox jako kopii zapasowej w chmurze)
Rozwiązanie 3. Usuń folder kompilacji z listy synchronizacji skrzynek referencyjnych.
źródło