c# - studio - sgen.exe falla durante la compilación
msbuild xml (5)
Después de cambiar el directorio de salida de un proyecto de estudio visual, comenzó a fallar la compilación con un error muy parecido al siguiente:
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 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?
No he visto este problema en particular, pero recientemente para nosotros se corrigió un error "C1001: Se produjo un error interno en el compilador" tipo de cl.exe después de instalar algunas actualizaciones de seguridad de Windows al azar y no relacionadas (o eso pensamos).
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 paquete de servicio de Visual Studio, pero realmente nos aferrábamos a las pajas cuando probamos las actualizaciones de seguridad de Windows.
Me parece lo suficientemente razonable, a menos que algo imponga un límite de 4096 caracteres [enumera 4020 caracteres]
Un límite 4096 para mí parece un poco absurdo, sería 2048 o 32767 u 8192 de las cosas que he encontrado al buscar los límites de la línea de comandos.
vea msdn para las opciones de sgen.exe [tiene la línea de comandos, puede jugar con ella manualmente ... elimine su .XmlSerializers.dll o use / force though]
Hoy también me encontré con cómo especificar más manualmente las opciones 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 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 / donde esto va]
[el código siguiente tiene UseProxyTypes establecido 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>
Me encontré con este problema cuando mencioné una asamblea en un proyecto de sitio web en el GAC que se había desinstalado desde entonces, y por alguna razón esa referencia desencadenó una generación de ensamblaje 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.
Si tiene este problema al construir su proyecto VS.NET en modo Release, aquí está la solución:
Vaya a las propiedades del proyecto y haga clic en la pestaña Crear y configure 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 con el fin de mejorar el rendimiento de inicio de un XmlSerializer cuando serializa o deserializa objetos de los tipos especificados". ( MSDN )