Question

Après avoir modifié le répertoire de sortie d'un projet Visual Studio, la construction a commencé à échouer avec une erreur très similaire à :

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.

J'ai changé le répertoire de sortie en target/win_x32/release/results mais le chemin dans sgen ne semble pas avoir été mis à jour.Il ne semble y avoir aucune référence dans le projet au chemin transmis à sgen, je ne sais donc pas comment y remédier.Pour contourner le problème, j'ai désactivé la génération de sérialisation, mais ce serait bien de résoudre le problème sous-jacent.Quelqu'un d'autre a vu ça ?

Était-ce utile?

La solution

voir msdn pour les options de sgen.exe [vous avez la ligne de commande, vous pouvez jouer avec manuellement...supprimez votre .XmlSerializers.dll ou utilisez /force cependant]

Aujourd'hui, j'ai également découvert comment faire plus spécifier manuellement les options sgen.Je voulais que cela n'utilise pas le commutateur /proxy, mais il semble qu'il puisse vous permettre de spécifier le répertoire de sortie.Je ne connais pas assez msbuild pour le rendre génial, mais cela devrait vous aider à démarrer [ouvrez votre .csproj/.vbproj dans l'éditeur de studio non visuel de votre choix, regardez en bas et vous devriez pouvoir comprendre comment /où ça va]

[le code ci-dessous a défini UseProxyTypes sur true pour votre commodité]

<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>

Autres conseils

Si vous rencontrez ce problème lors de la construction de votre projet VS.NET en mode Release, voici la solution :

Accédez aux propriétés du projet, cliquez sur l'onglet Construire et définissez la valeur de la liste déroulante "Générer l'assemblage de sérialisation" sur "Désactivé".

SGEN.exe est "Le générateur de sérialiseur XML crée un assemblage de sérialisation XML pour les types dans un assemblage spécifié afin d'améliorer les performances de démarrage d'un XMLSerializer lorsqu'il sérialise ou désérialise les objets des types spécifiés." (MSDN)

Je n'ai pas vu ce problème particulier, mais récemment pour nous un "C1001 :Une erreur interne s'est produite dans le crash de type "compilateur" de cl.exe a été corrigé après l'installation de mises à jour de sécurité Windows aléatoires et sans rapport (du moins c'est ce que nous pensions).

Nous savions que le code ne faisait pas planter le compilateur sur d'autres machines utilisant la même version et le même niveau de service pack de Visual Studio, mais nous étions vraiment aux prises avec des problèmes lorsque nous avons essayé les mises à jour de sécurité de Windows.

Cela me semble assez raisonnable, à moins que quelque chose n'impose une limite de 4 096 caractères [vous indiquez 4 020 caractères]

Une limite de 4096 me semble un peu absurde, ce serait 2048 ou 32767 ou 8192 d'après des éléments que j'ai trouvés en recherchant les limites de la ligne de commande.

J'ai rencontré ce problème lorsque j'avais référencé un assembly sur un projet de site Web dans le GAC qui avait depuis été désinstallé, et pour une raison quelconque, cette référence a déclenché une génération d'assembly de sérialisation, et sgen s'est étouffé avec la référence (puisqu'elle n'existait plus) .Après avoir supprimé la référence et désactivé la génération de l'assembly de sérialisation, je n'ai plus eu le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top