Pregunta

Después de cambiar el directorio de salida de un proyecto de Visual Studio, comenzó a fallar la compilación con un error muy parecido a:

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.

Cambié el directorio de salida a target/win_x32/release/results pero la ruta en sgen no parece haberse actualizado.Parece que no hay ninguna referencia en el proyecto sobre qué ruta se pasa a sgen, por lo que no estoy seguro de cómo solucionarlo.Como solución alternativa, deshabilité la generación de serialización, pero sería bueno solucionar el problema subyacente.¿Alguien más ha visto esto?

¿Fue útil?

Solución

ver msdn para las opciones de sgen.exe [tienes la línea de comando, puedes jugar con ella manualmente...elimine su .XmlSerializers.dll o use /force]

Hoy también me encontré con cómo hacer más especificar manualmente las opciones de sgen.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 ayudarlo a comenzar [abra su .csproj/.vbproj en el editor de estudio no visual de su elección, mire la parte inferior y debería poder descubrir cómo /a dónde va esto]

[el siguiente código tiene UseProxyTypes configurado en verdadero 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>

Otros consejos

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

Vaya a las propiedades del proyecto, haga clic en la pestaña Construir y establezca el valor del menú desplegable "Generar ensamblaje de serialización" en "Desactivado".

SGEN.EXE es "El generador de serializador XML crea un ensamblaje de serialización XML para tipos en un ensamblaje especificado para mejorar el rendimiento de inicio de un XMLSerializer cuando es serializa o deserializa objetos de los tipos especificados". (MSDN)

No he visto este problema en particular, pero recientemente nos apareció un "C1001:Se ha producido un error interno en el tipo de bloqueo del compilador de cl.exe que se solucionó después de instalar algunas actualizaciones de seguridad de Windows aleatorias y no relacionadas (o eso pensábamos).

Sabíamos que el código no bloqueaba el compilador en otras máquinas que usaban la misma versión y nivel de paquete de servicio de Visual Studio, pero estábamos realmente agarrados a un clavo ardiendo cuando probamos las actualizaciones de seguridad de Windows.

Me parece bastante razonable, a menos que algo imponga un límite de 4096 caracteres [indica 4020 caracteres]

Un límite de 4096 me parece un poco absurdo, sería 2048 o 32767 u 8192 de cosas que encontré buscando los límites de la línea de comandos.

Me encontré con este problema cuando hice referencia a un ensamblado en un proyecto de sitio web en el GAC que ya se había desinstalado y, por alguna razón, esa referencia desencadenó una generación de ensamblado de serialización y sgen se atragantó con la referencia (ya que ya no existía). .Después de eliminar la referencia y desactivar la generación del ensamblaje de serialización, ya no tuve el problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top