2

La conversion PDF échoue lors de l'exécution du test sur CI. J'utilise la bibliothèque GhostscriptsSharp pour la conversion.TeamCity: GhostscriptSharp: Une tentative de chargement d'un programme avec un format incorrect a été effectuée. (Exception de HRESULT: 0x8007000B)

Je ne suis pas face à ce problème lors de l'exécution de mon test local, le fichier PDF est converti en images correctement.

J'ai recherche sur Internet pour trouver une solution mais jusqu'à présent, tout ce que j'ai trouvé m'a pas aidé à trouver une solution.

Une tentative de chargement d'un programme avec un format incorrect a été effectuée. (Exception de HRESULT: 0x8007000B)

System.BadImageFormatException: Une tentative a été faite pour charger un programme avec un format incorrect. (Exception de HRESULT: 0x8007000B) à GhostscriptSharp.GhostscriptWrapper.CreateAPIInstance (IntPtr & pinstance, IntPtr caller_handle) à GhostscriptSharp.GhostscriptWrapper.CallAPI (String [] args) à GhostscriptSharp.GhostscriptWrapper.GeneratePageThumbs (String InputPath, String OutputPath, Int32 firstPage, Int32 lastPage, largeur Int32, hauteur Int32) à Framework.Utils.FileUtils.ConvertPdfToImages (Chaîne pdfPath, Chaîne imagesPath, Int32 pageCount) dans c: \ TeamCity \ buildAgent \ travail \ 8e7aa88e702dfaf7 \ Framework \ Utils \ FileUtils.cs: ligne 90 à StepDefinitions.General.Search.SearchTableSteps.ThenImagesAreCorrectInDownloadedDocumentFromSearchGrid (table Table) dans c: \ TeamCity \ buildAgent \ travail \ 8e7aa88e702dfaf7 \ StepDefinitions \ General \ Search \ SearchTableSteps.cs: ligne 282 à TechT alk.SpecFlow.Bindings.BindingInvoker.InvokeBinding (IBinding liaison, IContextManager ContextManager, objet [] arguments, ITestTracer testTracer, TimeSpan & durée) à TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch (correspondance BindingMatch, objet [] arguments) à TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep (stepInstance stepInstance) à TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() à Features.Clerk.Version_2.Clerk_QuickDocFeature.ScenarioCleanup() dans c: \ TeamCity \ BuildAgent \ work \ 8e7aa88e702dfaf7 \ Features \ Clerk \ version_2 \ ClerkQuickDoc.feature.cs: ligne 0 à Features.Clerk.Version_2.Clerk_QuickDocFeature.Clerk_DownloadRedactedDocument() dans c: \ TeamCity \ buildAgent \ work \ 8e7aa88e702dfaf7 \ Caractéristiques \ Clerk \ version_2 \ ClerkQuickDoc.feature: ligne 28 à TechTalk.SpecRun.Framework.TaskExecutors.StaticOrInstanceMethodExecutor.ExecuteInternal (ITestThreadExecutionContext testThreadExecutionContext) dans c: \ TeamCity \ BuildAgent \ work \ 1ace6ed01d0a43bb \ TechTalk.SpecRun.Framework.Interfaces \ TaskExecutors \ StaticOrInstanceMethodExecutor.cs: ligne 40 à TechTalk. SpecRun.Framework.TestAssemblyExecutor.ExecuteTestNodeTask (testNode testNode, tâche ITaskExecutor, TraceEventType eventType) dans c: \ TeamCity \ BuildAgent \ work \ 1ace6ed01d0a43bb \ TechTalk.SpecRun.Framework.Executor \ TestAssemblyExecutor.cs: ligne 215

+0

Sans les étapes/le code correspondant responsable du message d'erreur, il sera difficile de vous aider avec votre problème. –

Répondre

4

Le Une erreur de format incorrect se produit généralement lors de la tentative de chargement d'un assemblage non-NET (par ex. une DLL de code natif) comme s'il s'agissait d'un assemblage .NET ou un binaire qui a été compilé pour une plate-forme différente (par exemple 32 bits par rapport à 64 bits). Utilisez un outil tel que ILSpy (pour les assemblys managés) ou Dependency Walker (pour les DLL natives) pour vérifier que les propriétés du binaire correspondent à celles du processus. Comme il semble qu'un assembly tiers (GhostscriptSharp) tente de charger le fichier, il peut être nécessaire de refléter cet assembly pour déterminer le fichier concerné par l'erreur.

0

Je l'ai résolu le même problème dans mon projet dans Visual Studio 2013 en cochant l'option Projet-> Propriétés-> Créer une cible de plate-forme: Préférez 32 bits (si la cible plate-forme est réglé sur un CPU)

0

Sous l'étape de construction de la ville de l'équipe pour xunit, il y a, sous les options avancées, un .NET Runtime, avec une liste déroulante pour la plateforme (qui est normalement cachée). Cela vaut par défaut Any CPU/MSIL qui exécute xunit.console.exe qui est 64 bits. Si vous le changez en x86, il utilisera xunit.console.x86.exe qui va réussir.