2008-08-09 11 views
9

Nachdem das Ausgabeverzeichnis eines Visual Studio-Projekt zu ändern es mit einem Fehler sehr viel zu bauen zu scheitern begann wie:sgen.exe versagt während Build

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. 

ich das Ausgabeverzeichnis geändert/win_x32/release Ziel/Ergebnisse, aber der Pfad in sgen scheint nicht aktualisiert worden zu sein. Im Projekt scheint es keinen Hinweis darauf zu geben, welcher Pfad an sgen übergeben wird, so dass ich mir nicht sicher bin, wie ich ihn beheben kann. Als Umgehung habe ich die Serialisierungsgeneration deaktiviert, aber es wäre nett, das zugrunde liegende Problem zu beheben. Hat jemand anderes das gesehen?

Antwort

7

siehe msdn für die Optionen Sgen.exe [Sie die Befehlszeile haben, können Sie mit ihm spielen manuell ... löschen Ihre .XmlSerializers.dll oder Verwendung/Kraft obwohl]

Heute habe ich auch über lief wie zu mehr manually specify the sgen options. Ich wollte, dass dies die Option/proxy nicht verwendet, aber es scheint, dass Sie damit das Ausgabeverzeichnis angeben können. Ich weiß nicht genug über msbuild, um es großartig zu machen, aber das sollte Sie dazu bringen [öffnen Sie Ihre .csproj/.vbproj in Ihrem nicht-visuellen Studio-Editor der Wahl, schauen Sie auf den Boden und Sie sollten in der Lage sein, herauszufinden, wie/wo dies geht]

[der folgende Code für Ihre Bequemlichkeit UseProxyTypes auf true gesetzt hat]

<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

Ich habe dieses spezielle Problem nicht gesehen, aber vor kurzem für uns ein "C1001: Ein interner Fehler ist im Compiler aufgetreten" Typ Absturz von cl.exe wurde nach der Installation einige zufällig und unabhängig (oder so wir dachten) behoben Windows Sicherheitsupdates

Wir wussten, dass der Code den Compiler auf anderen Rechnern mit der gleichen Version und dem gleichen Service Pack-Level von Visual Studio nicht zum Absturz brachte, aber wir packten die Strohhalme, als wir die Windows-Sicherheitsupdates ausprobierten.

0

es vernünftig genug, um mich sieht, es sei denn, etwas ist eine 4096 Zeichenbegrenzung auferlegt [Sie 4020 Zeichen Liste]

A 4096 Limit für mich ein bisschen absurd scheint, wäre es 2048 oder 32767 oder 8192 von Sachen zu sein Ich habe gefunden, indem ich nach den Befehlszeilenlimits suche.

0

ich in diese Ausgabe lief, als ich eine Versammlung auf einem Website-Projekt in dem GAC verwiesen hatte, dass war seit der Deinstallation, und aus irgendeinem Grund ausgelöst, dass die Referenz eine Serialisierung Assembly Generation ausgelöst, und sgen an der Referenz (seit es nicht mehr existierte). Nachdem ich die Referenz- und die Serialisierungsassemblierungsgeneration entfernt hatte, hatte ich das Problem nicht mehr.

12

Wenn Sie dieses Problem haben, während Modus hier Ihr VS.NET Projekt in Release Aufbau ist die Lösung:

Gehen Sie auf die Projekteigenschaften und klicken Sie auf die Registerkarte Erstellen und setzen Sie den Wert der „Serialisierungsassembly generieren "Dropdown auf" Aus ".

Sgen.exe ist "Der XML Serializer Generator erstellt eine XML-Serialisierungsassembly für Typen in einer angegebenen Assembly, um die Startleistung eines XmlSerializers zu verbessern, wenn Objekte der angegebenen Typen serialisiert oder deserialisiert werden." (MSDN)