14

Mamy rozwiązanie VS.Net z 20 projektami.Nieznany błąd kompilacji, "Wyjątek typu" System.OutOfMemoryException "został zgłoszony

occasionaly w VS.NET, kiedy staramy się budować/debug nasze rozwiązanie, otrzymujemy następujący błąd:

nieznany błąd kompilacji, „wyjątek typu 'System.OutOfMemoryException' został rzucony

Jedynym sposobem na "naprawienie" tego problemu jest ponowne otwarcie programu Visual Studio, a następnie kompilacja rozwiązania idzie dobrze, ale ponownie po pewnym czasie ponownie wystąpi wyjątek OutOfMemory. Naprawianie aplikacji Visual Studio kilka razy dziennie jest irytujące, więc czy znasz jakieś obejście tego problemu?

+1

+1 Mam ten sam problem i nigdy nie były w stanie śledzić ją w dół. Nie chodzi tylko o kompilację; Miałem to na otwarcie projektanta formularzy po VS został otwarty na chwilę. Zamknięcie i ponowne otwarcie VS rozwiązuje problem w 100% przypadków, a przynajmniej Menedżer zadań uważa, że ​​zostało jeszcze dużo pamięci. –

+0

Czy używasz ReSharper lub innych dodatków? Spróbuj wyłączyć je za pomocą Narzędzia-> Menedżer dodatków, aby sprawdzić, czy są one częścią problemu.Czy tak się dzieje, jeśli po prostu wielokrotnie tworzysz kompilacje bez debugowania lub testów jednostkowych? –

+0

Używam programu ReSharper, czekając na następny wyjątek OutOfMemoryException, a spróbuję go wyłączyć, aby zobaczyć, co się stanie. Dzięki – m1k4

Odpowiedz

2

Zgodnie z tym, co zaleca Microsoft, nie jest dobrym pomysłem posiadanie wielu projektów w ramach jednego rozwiązania.

Sprawdź ten link http://support.microsoft.com/kb/949755.

Ale rozwiązanie sugerowane w artykule nie jest czymś, co można od razu wykorzystać z powodu kosztów związanych z refaktoryzacją kodu.

Czy próbowałeś zbudować rozwiązanie spoza IDE. (Coś jak MSBUILD). To może pomóc.

+0

Nie rozdzieliliśmy naszego kodu w kilku rozwiązaniach z tego powodu: refactoring Budowanie poza IDE działa dobrze, jedynym problemem jest budowa VS.NET – m1k4

2

Mam ten sam problem, jeśli używam programu ReSharper i uruchamiam kilka testów jednostkowych (z włączoną funkcją CodeCoverage).

Zakładam również, że jest to problem z programem ReSharper. A ponieważ wyłączam go podczas uruchamiania Unittest, wyjątek nigdy się nie pojawia.

BTW - Wyłączenie go, gdy wyjątek rzuca (jak wspomniano w komentarzach powyżej) nie pomaga, ponieważ wyłączenie go podczas działania VS nie spowoduje jego wyładowania z pamięci. Jedynym sposobem wymuszenia wyładowania jest zniszczenie wszystkich AppDomains, które wczytały bibliotekę DLL. W scenariuszu VS pakietu oznacza to trzeba zburzyć cały proces VS :(

+0

Zgadnij, że masz rację. Wyłączyłem ReSharper, zrestartowałem VS i czekam kilka godzin, żeby zobaczyć, czy to się powtórzy. Jeśli nie otrzymasz +1 :) i zobaczę co zrobić z ReSharperem:/ – m1k4

2

Albo można po prostu zminimalizować Visual Studio dla około 10 sekund (zobacz w menedżerze zadań, w jaki sposób zużycie pamięci devenv.exe spada po zminimalizowaniu). Działa to dla mnie w większości przypadków. Rzadko muszę zamknąć VS, aby pozbyć się tego błędu.

Powiązane problemy