2014-05-21 16 views
13

Quando abbiamo installato SP2 abbiamo iniziato a notare le seguenti soluzioni quando si costruisce:.Visual Studio 2013 e Aggiornamento 2 (intermittente errori di generazione)

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. 

e poi guardando in uno dei MSBuild _ * file Failure.txt vedo :

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() 
=================== 

sembra accadere la prima volta che costruiamo una soluzione e poi si ferma accadendo per un po 'e poi torna indietro e poi se ne va per un po'. Qualche idea su come risolvere questo problema? Non posso essere fuori memoria perché sto utilizzando SOLO VS2013 & un paio di IE instancens su un sistema a 64 bit con 8 GB di RAM.

+3

La quantità di RAM fisica e le altre app in esecuzione sono irrilevanti. Ogni processo ha la propria memoria e utilizzerà la memoria virtuale se necessario. msbuild è un processo a 32 bit quindi può indirizzare solo 4 GB di RAM, una buona parte dei quali è riservata. – jaket

+0

Solo una nota: Microsoft non fa più service pack. È "Aggiornamento 2", non "Service Pack 2". – jmcilhinney

+0

Sto diventando esattamente lo stesso. Inoltre, ho anche iniziato a ottenere lo stesso errore intermittente quando si utilizza VS2010 per compilare lo stesso progetto. – Stochastically

risposta

10

mi è stato sempre lo stesso comportamento dopo l'installazione di VS 2013 Update 2, ma non durante la compilazione direttamente da Visual Studio. Ho riscontrato questi errori durante l'utilizzo di msbuild nei nostri script di compilazione separati (una raccolta di file "bat" di Windows). Questi script sono state utilizzando

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

Per fortuna, il percorso di questo programma è configurabile per tutti i nostri script in un unico luogo (utilizzando qualche tipo di meccanismo di includere). Ho scambiato dal

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

e ora tutto sembra essere fine. Quest'ultimo "MSBuild.exe" sembra essere una versione più recente che è stata installata come parte di "Aggiornamento 2", la prima è la versione di .NET framework 4.

Ho anche provato la versione di amd64 menzionata da @ JJHashemi, ma mi ha dato alcuni brutti avvertimenti sull'architettura del processore di alcune DLL framework che non corrispondevano alla mia architettura di destinazione.

+0

Quale variabile di ambiente è stata impostata su "C: \ Programmi (x86) \ MSBuild \ 12.0 \ Bin \ MSBuild.exe" ho riscontrato questo problema, ma non ho env. variabili che assomigliano a quella sopra. – Androme

+0

@DoomStone: stavo parlando dei nostri script di compilazione personalizzati, utilizzando una variabile di ambiente personalizzata definita da me stesso. Se gli script di compilazione contengono il percorso di MSBUILD, è necessario modificare il percorso in quegli script ovunque si verifichi. –

+0

@DocBrown - La tua risposta ha chiaramente gli upvotes, quindi alcuni lo capiscono, ma sembra che manchino informazioni per le persone che non sanno cosa intendi con un file di script. Il percorso del programma è configurabile? Ha senso, ma dove? Non vedo alcuna opzione di ambiente per il mio semplice progetto VB.NET. Essendo costretto a cambiare il mio progetto in x64, la mia compilazione fallisce a intermittenza. – Keith

6

Ho risolto questo sostituendo C: \ Program Files (x86) \ MSBuild \ 12.0 \ Bin con C: \ Program Files (x86) \ MSBuild \ 12.0 \ Bin \ amd64

+3

Dove hai cambiato questo valore? – Zack

Problemi correlati