Search code examples
visual-studiox86x86-64

Library 32bits for Sage 100c in 64 bit webapplication


I've an existing web application project in my VS2022. I create a library called "Sage" for all my connexions on Sage 100c (objet métier). But this one need to be in 32bits. I put target cpu = x86 When I included "Sage" in my old project I've this error

Erreur du serveur dans l'application '/'. Impossible de charger le fichier ou l'assembly 'Sage' ou une de ses dépendances. Tentative de chargement d’un programme de format incorrect. Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.BadImageFormatException: Impossible de charger le fichier ou l'assembly 'Sage' ou une de ses dépendances. Tentative de chargement d’un programme de format incorrect.

Erreur source: Une exception non gérée s'est produite lors de l'exécution de la requête Web actuelle. Les informations relatives à l'origine et l'emplacement de l'exception peuvent être identifiées en utilisant la trace de la pile d'exception ci-dessous.

Suivi du chargement de l'assembly: Les informations suivantes peuvent permettre de déterminer la raison pour laquelle l'assembly 'Sage' n'a pas pu être chargé.

=== Informations d'état de liaison préalable ===
JRN : DisplayName = Sage
(Partial)
AVT : des informations de liaison partielle ont été fournies pour un assembly :
AVT : Nom d'assembly : Sage | ID de domaine : 2
AVT : une liaison partielle se produit lorsqu'une partie seulement du nom complet de l'assembly est fournie.
AVT : cela peut entraîner le chargement d'un assembly erroné par le classeur.
AVT : il est recommandé de fournir une identité textuelle complètement spécifiée pour l'assembly,
AVT : qui comprend le nom simple, la version, la culture et le jeton de clé publique.
AVT : pour plus d'informations et pour obtenir des solutions à ce problème, consultez le livre blanc à l'adresse suivante http://go.microsoft.com/fwlink/?LinkId=109270.
JRN : Appbase = file:///C:/XXX/
JRN : PrivatePath initial = C:\XXXX\bin
Assembly appelant : (Unknown).
===
JRN : cette liaison démarre dans le contexte de chargement de default.
JRN : utilisation du fichier de configuration de l'application : C:\XXXX\web.config
JRN : utilisation du fichier de configuration d'hôte : 
C:\Users\MOI\Documents\IISExpress\config\aspnet.config
JRN : utilisation du fichier de configuration de l'ordinateur à partir de 
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
JRN : stratégie non appliquée à la référence à ce stade (liaison d'assembly privée, personnalisée, partielle ou basée sur l'emplacement).
JRN : tentative de téléchargement de la nouvelle URL 
file:///C:/Users/MOI/AppData/Local/Temp/2/Temporary ASP.NET Files/vs/0a9a1f54/bf4483de/Sage.DLL.
JRN : tentative de téléchargement de la nouvelle URL file:///C:/Users/MOI/AppData/Local/Temp/2/Temporary ASP.NET Files/vs/0a9a1f54/bf4483de/Sage/Sage.DLL.
JRN : tentative de téléchargement de la nouvelle URL file:///C:/XXX/Sage.DLL.
ERR : impossible de terminer l'installation de l'assembly (hr = 0x8007000b). Détection terminée.

Trace de la pile:

[BadImageFormatException: Impossible de charger le fichier ou l'assembly 'Sage' ou une de ses dépendances. Tentative de chargement d’un programme de format incorrect.] System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +232 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +113 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +23 System.Reflection.Assembly.Load(String assemblyString) +35 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +48

[ConfigurationErrorsException: Impossible de charger le fichier ou l'assembly 'Sage' ou une de ses dépendances. Tentative de chargement d’un programme de format incorrect.] System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +767 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +256 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +58 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +287 System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +69 System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +137 System.Web.Compilation.BuildManager.ExecutePreAppStart() +172 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +854

[HttpException (0x80004005): Impossible de charger le fichier ou l'assembly 'Sage' ou une de ses dépendances. Tentative de chargement d’un programme de format incorrect.] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +532 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +111 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +724

How Can I Used my Sage library in this context? Thanks for your help


Solution

  • Finally I split my application in 2 applications. Same Database, but first stay in 64bits and the 2nd in 32bits