2016-04-07 4 views
0

Nous essayons d'utiliser ABCpdf .NET v10 de WebSupergoo. Et cela fonctionne très bien si nous utilisons leur installateur. Mais v8 est déjà installé sur le serveur avec d'autres projets qui l'utilisent, donc nous ne voulons pas lancer le programme d'installation pour le moment. (Nous espérons pouvoir bientôt tester l'installation sur une machine différente et/ou mettre à niveau ces projets, mais ce projet ne peut pas attendre.)Non-Assembly DLL dans bin

Les instructions "Installation manuelle" de WebSupergoo (http://www.websupergoo.com/helppdfnet/default.htm?page=source%2F3-concepts%2F6-installation.htm) indiquent 3 DLL principales (ABCpdf.dll, ABCpdf10-32.dll et ABCpdf10-64.dll) dans le dossier bin et ajouter une référence à ABCpdf.dll.

Nous ne les voulons pas vraiment dans le dossier bin, car le contrôle de source est configuré pour ne rien ajouter à partir de ce dossier. Cependant, pour le faire fonctionner (pour l'instant) ils ont été placés dans ce dossier. Puis, quand je tente d'exécuter le projet, je reçois l'erreur suivante (les noms de dossiers modifiés pour la sécurité):

System.BadImageFormatException was unhandled by user code 
    HResult=-2146234344 
    Message=Could not load file or assembly 'file:///D:\\Projects\Solution\WebProject\bin\ABCpdf10-32.dll' or one of its dependencies. The module was expected to contain an assembly manifest. 
    Source=mscorlib 
    FileName=file:///D:\Projects\Solution\WebProject\bin\ABCpdf10-32.dll 
    FusionLog==== Pre-bind state information === 
LOG: Where-ref bind. Location = D:\Projects\Solution\WebProject\bin\ABCpdf10-32.dll 
LOG: Appbase = file:///D:/Projects/Solution/WebProject/ 
LOG: Initial PrivatePath = D:\Projects\Solution\WebProject\bin 
Calling assembly : (Unknown). 
=== 
LOG: This bind starts in LoadFrom load context. 
WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load(). 
LOG: Using application configuration file: D:\\Projects\Solution\WebProject\web.config 
LOG: Using host configuration file: D:\Documents\IISExpress\config\aspnet.config 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Attempting download of new URL file:///D:/Projects/Solution/WebProject/bin/ABCpdf10-32.dll. 
ERR: Failed to complete setup of assembly (hr = 0x80131018). Probing terminated. 

    StackTrace: 
     at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 
     at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 
     at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 
     at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark) 
     at System.Reflection.Assembly.LoadFrom(String assemblyFile) 
     at WebActivator.PreApplicationStartCode.Start() in D:\Code\Bitbucket\WebActivator\WebActivator\PreApplicationStartCode.cs:line 11 
    InnerException: 

Notre méthode preferred serait de les avoir dans un dossier « lib » (actuellement au niveau de la solution) . Donc, j'ai mis les 3 DLL dans ce dossier et ajouté la référence. Le projet compile et fonctionne, mais quand nous essayons de créer le PDF, nous obtenons l'erreur suivante:

Unable to load DLL 'ABCpdf10-32.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) 

soutien WebSupergoo dit: « ABCpdf10-32.dll est pas une assemblée si bien sûr, il ne contient pas d'assemblage manifeste".

J'ai essayé de sortir ABCpdf10-32.dll du dossier bin, et j'obtiens la même erreur avec ABCpdf10-64.dll.

J'ai essayé de définir "Copy Local" sur la référence False. Pas de changement.

copie locale: https://msdn.microsoft.com/en-us/library/t1zz5y8c(v=vs.90).aspx

J'ai essayé d'utiliser la technique "Sonder". Je l'ai essayé dans le fichier web.config & app.config pour le projet (il ne semble pas en avoir un pour la solution). J'ai également essayé de déplacer le dossier de lib au sein du projet lui-même. Pas de changement.

Sonder: https://msdn.microsoft.com/en-us/library/823z9h8w(v=vs.110).aspx

Je ne sais pas quoi d'autre pour essayer à ce stade. Toute aide serait grandement appréciée!

Répondre

0

System.BadImageFormatException est une exception générale, qui est utilisée lorsque vous utilisez une DLL 32 bits sur un environnement 64 bits, ou vice versa.

Applications Web: elles permettent de charger toutes les DLL du dossier, utilisées ou non (WebActivator.PreApplicationStartCode.Start()). Vérifiez le pool IIS, c'est 64 bits? Puis supprimez tous les 32 dll sur le dossier ou sous-dossiers. Est-ce que vous le forcer à 32? Ensuite, supprimez tous les 64 dll sur le dossier ou sous-dossiers.