2014-05-21 14 views
13

Kiedy zainstalowany SP2 zaczęliśmy zauważać następujące rozwiązania przy budowaniu.Visual Studio 2013 i Update 2 (Przerywany Budowanie błędy)

ERROR C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2348,5): Task host node exited prematurely. Diagnostic information may be found in files in the temporary files directory named MSBuild_*.failure.txt. 
ERROR C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2366,7): The "GenerateResource" task's outputs could not be retrieved from the "FilesWritten" parameter. Object does not match target type. 

A potem patrząc na jednego z MSBuild _ * failure.txt pliki widzę :

UNHANDLED EXCEPTIONS FROM PROCESS 26072: 
===================== 
5/20/2014 4:18:22 PM 
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown. 
    at System.Collections.Generic.Dictionary`2.Initialize(Int32 capacity) 
    at System.Collections.Generic.Dictionary`2..ctor(Int32 capacity, IEqualityComparer`1 comparer) 
    at Microsoft.Build.BackEnd.NodePacketTranslator.NodePacketReadTranslator.TranslateDictionary(Dictionary`2& dictionary, IEqualityComparer`1 comparer) 
    at Microsoft.Build.BackEnd.TaskParameter.ReadITaskItem(INodePacketTranslator translator, ITaskItem& wrappedItem) 
    at Microsoft.Build.BackEnd.TaskParameter.TranslateITaskItemArray(INodePacketTranslator translator) 
    at Microsoft.Build.BackEnd.TaskParameter.Translate(INodePacketTranslator translator) 
    at Microsoft.Build.BackEnd.TaskParameter.FactoryForDeserialization(INodePacketTranslator translator) 
    at Microsoft.Build.BackEnd.NodePacketTranslator.NodePacketReadTranslator.Translate[T](T& value, NodePacketValueFactory`1 factory) 
    at Microsoft.Build.BackEnd.NodePacketTranslator.NodePacketReadTranslator.TranslateDictionary[T](Dictionary`2& dictionary, IEqualityComparer`1 comparer, NodePacketValueFactory`1 valueFactory) 
    at Microsoft.Build.BackEnd.TaskHostConfiguration.Translate(INodePacketTranslator translator) 
    at Microsoft.Build.BackEnd.TaskHostConfiguration.FactoryForDeserialization(INodePacketTranslator translator) 
    at Microsoft.Build.BackEnd.NodePacketFactory.PacketFactoryRecord.DeserializeAndRoutePacket(Int32 nodeId, INodePacketTranslator translator) 
    at Microsoft.Build.BackEnd.NodePacketFactory.DeserializeAndRoutePacket(Int32 nodeId, NodePacketType packetType, INodePacketTranslator translator) 
    at Microsoft.Build.CommandLine.OutOfProcTaskHostNode.DeserializeAndRoutePacket(Int32 nodeId, NodePacketType packetType, INodePacketTranslator translator) 
    at Microsoft.Build.BackEnd.NodeEndpointOutOfProcBase.PacketPumpProc() 
=================== 

wydaje się zdarzyć na raz pierwszy zbudować rozwiązanie, a następnie zatrzymuje się dzieje na chwilę, a potem wraca i potem odchodzi na chwilę. Wszelkie pomysły, jak to naprawić? Nie mogę być poza pamięcią, ponieważ JA WYŁĄCZNIE uruchamiam VS2013 & kilka instancji IE w 64-bitowym systemie z 8 GB pamięci RAM.

+3

Liczba fizycznych pamięci RAM i innych uruchomionych aplikacji jest nieistotna. Każdy proces ma własną pamięć i jeśli to konieczne, korzysta z pamięci wirtualnej. msbuild jest 32-bitowym procesem, więc może adresować tylko 4 GB pamięci RAM, z których część jest zarezerwowana. – jaket

+0

Uwaga: Microsoft nie robi już dodatków Service Pack. To "Aktualizacja 2", a nie "Service Pack 2". – jmcilhinney

+0

Otrzymuję dokładnie to samo. Dodatkowo, zacząłem również otrzymywać ten sam przerywany błąd podczas korzystania z VS2010 do kompilacji tego samego projektu. – Stochastically

Odpowiedz

10

byłem coraz dokładnie takie same zachowanie po zainstalowaniu VS 2013 Update 2, ale nie podczas kompilacji bezpośrednio z wnętrza Visual Studio. Te błędy wystąpiły podczas korzystania z msbuild w oddzielnych skryptach budowania (zbiór plików "bat" systemu Windows). Skrypty te były przy użyciu

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 

szczęście droga do tego programu jest konfigurowalny dla wszystkich naszych skryptów w jednym miejscu (za pomocą jakiegoś zawierać mechanizm). Wymieniłem go

C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe 

i teraz wszystko wydaje się być w porządku. Ten ostatni "MSBuild.exe" wydaje się być nowszą wersją, która została zainstalowana jako część "Upgrade 2", pierwsza to wersja należąca do .NET framework 4.

Próbowałem także wersji amd64 wspomnianej przez @ JJHashemi, ale dało mi to kilka nieprzyjemnych ostrzeżeń na temat architektury procesora niektórych bibliotek DLL, które nie pasują do mojej architektury docelowej.

+0

Jaką zmienną środowiskową ustawiłeś na "C: \ Program Files (x86) \ MSBuild \ 12.0 \ Bin \ MSBuild.exe", mam ten problem, ale nie mam env. zmienne, które wyglądają jak powyższe. – Androme

+0

@DoomStone: Mówiłem o naszych niestandardowych skryptach do kompilacji, używając niestandardowej zmiennej środowiskowej zdefiniowanej przeze mnie. Jeśli twoje skrypty budujące zawierają ścieżkę do MSBUILD, musisz zmienić ścieżkę w tych skryptach, gdziekolwiek się pojawią. –

+0

@DocBrown - Twoja odpowiedź wyraźnie zawiera awanse, więc niektórzy ją rozumieją, ale wygląda na to, że brakuje informacji dla osób, które nie wiedzą, co masz na myśli przez plik skryptu. Ścieżkę do programu można skonfigurować? Ma sens, ale gdzie? Nie widzę żadnych opcji środowiska dla mojego prostego projektu VB.NET. Zmuszenie do zmiany mojego projektu na x64 powoduje, że moja kompilacja nie działa z przerwami. – Keith

6

Rozwiązałem to przez zastąpienie C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin z katalogu C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ amd64

+3

Gdzie zmieniłeś tę wartość? – Zack

Powiązane problemy