2008-08-09 16 views
9

Después de cambiar el directorio de salida de un proyecto de Visual Studio empezó a dejar de construir con un error muy parecido:sgen.exe falla durante la compilación

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\sgen.exe /assembly:C:\p4root\Zantaz\trunk\EASDiscovery\EASDiscoveryCaseManagement\obj\Release\EASDiscoveryCaseManagement.dll /proxytypes /reference:C:\p4root\Zantaz\trunk\EASDiscovery\EasDiscovery.Common\target\win_x32\release\results\EASDiscovery.Common.dll /reference:C:\p4root\Zantaz\trunk\EASDiscovery\EasDiscovery.Export\target\win_x32\release\results\EASDiscovery.Export.dll /reference:c:\p4root\Zantaz\trunk\EASDiscovery\ItemCache\target\win_x32\release\results\EasDiscovery.ItemCache.dll /reference:c:\p4root\Zantaz\trunk\EASDiscovery\RetrievalEngine\target\win_x32\release\results\EasDiscovery.RetrievalEngine.dll /reference:C:\p4root\Zantaz\trunk\EASDiscovery\EASDiscoveryJobs\target\win_x32\release\results\EASDiscoveryJobs.dll /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Shared.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.Misc.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinChart.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinDataSource.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinDock.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinEditors.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinGrid.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinListView.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinMaskedEdit.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinStatusBar.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinTabControl.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinToolbars.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinTree.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.v8.1.dll" /reference:"C:\Program Files\Microsoft Visual Studio 8\ReportViewer\Microsoft.ReportViewer.Common.dll" /reference:"C:\Program Files\Microsoft Visual Studio 8\ReportViewer\Microsoft.ReportViewer.WinForms.dll" /reference:C:\p4root\Zantaz\trunk\EASDiscovery\PreviewControl\target\win_x32\release\results\PreviewControl.dll /reference:C:\p4root\Zantaz\trunk\EASDiscovery\Quartz\src\Quartz\target\win_x32\release\results\Scheduler.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.configuration.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.DirectoryServices.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.Services.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /compiler:/delaysign- 
    Error: The specified module could not be found. (Exception from HRESULT: 0x8007007E) 
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1902,9): error MSB6006: "sgen.exe" exited with code 1. 

he cambiado el directorio de salida para apuntar/win_x32/liberación/results pero la ruta en sgen no parece haberse actualizado. Parece que no hay referencia en el proyecto de qué camino se pasa a sgen, así que no estoy seguro de cómo solucionarlo. Como solución, he desactivado la generación de serialización, pero sería bueno solucionar el problema subyacente. ¿Alguien más ha visto esto?

Respuesta

7

ver msdn de las opciones para Sgen.exe [usted tiene la línea de comandos, se puede jugar con él de forma manual ... borrar su .XmlSerializers.dll o uso/fuerza embargo]

Hoy también corrió por cómo más manually specify the sgen options. Quería que esto no usara el modificador/proxy, pero parece que puede permitirle especificar el directorio de salida. No sé lo suficiente sobre msbuild para hacerlo increíble, pero esto debería ayudarte a comenzar [abre tu .csproj/.vbproj en tu editor de estudio no visual de tu elección, mira la parte inferior y deberías ser capaz de descubrir cómo/dónde va esto]

[el código de abajo ha tenido UseProxyTypes establecidas en true para su conveniencia]

<Target Name="GenerateSerializationAssembliesForAllTypes" 
    DependsOnTargets="AssignTargetPaths;Compile;ResolveKeySource" 
    Inputs="$(MSBuildAllProjects);@(IntermediateAssembly)" 
    Outputs="$(OutputPath)$(_SGenDllName)"> 
    <SGen BuildAssemblyName="$(TargetFileName)" 
     BuildAssemblyPath="$(OutputPath)" References="@(ReferencePath)" 
     ShouldGenerateSerializer="true" UseProxyTypes="true" 
     KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" 
     DelaySign="$(DelaySign)" ToolPath="$(SGenToolPath)"> 
     <Output TaskParameter="SerializationAssembly" 
      ItemName="SerializationAssembly" /> 
    </SGen> 
</Target> 
<!-- <Target Name="BeforeBuild"> 
</Target> --> 
<Target Name="AfterBuild" 
    DependsOnTargets="GenerateSerializationAssembliesForAllTypes"> 
</Target> 
0

No he visto este problema en particular, pero recientemente para nosotros se corrigió un error "C1001: un error interno en el compilador" tipo de cl.exe después de instalar algunos aleatorios y no relacionados (o eso pensamos) Actualizaciones de seguridad de Windows.

Sabíamos que el código no bloqueaba el compilador en otras máquinas que usaban la misma versión y el mismo nivel de Service Pack de Visual Studio, pero realmente nos aferrábamos a las pajas cuando probamos las actualizaciones de seguridad de Windows.

0

Parece bastante razonable para mí, a menos que algo está imponiendo un límite de 4096 caracteres [4020 caracteres se enumeran]

un límite de 4096 me parece un poco absurdo, sería 2048 o 32767 o 8192 de la materia Lo he encontrado buscando los límites de la línea de comando.

0

me encontré con este problema cuando había referido una asamblea en un proyecto de sitio web en el GAC había sido desinstalado desde entonces, y por alguna razón esa referencia desencadenó una generación de conjunto de serialización, y sgen se bloqueó en la referencia (ya que no existía). Después de eliminar la referencia y convertir la generación del conjunto de serialización en desactivada, ya no tuve el problema.

12

Si tiene este problema, mientras que la construcción de su proyecto de VS.NET en modo de lanzamiento Aquí está la solución:

Ir a las propiedades del proyecto y haga clic en el separador Crear y establecer el valor de la "Generación de ensamblado de serialización "desplegable a" Desactivado ".

Sgen.exe es "El Generador de serializador XML crea un ensamblaje de serialización XML para tipos en un ensamblaje especificado con el fin de mejorar el rendimiento de inicio de un XmlSerializer cuando serializa o deserializa objetos de los tipos especificados". (MSDN)

Cuestiones relacionadas