2013-03-19 1 views
4

Я пытаюсь создать образец веб-приложения из шаблона пустой веб-формы в VS2012 и добавить к нему файл PDFNet. Если я запускаю проект в .NET 3.5 без проблем. Если я запустил его в .NET> = 4, я получу эту ошибку:Не удалось загрузить файл или сборку «PDFNet» или одну из ее зависимостей. Была сделана попытка загрузить программу с неправильным форматом

Не удалось загрузить файл или сборку «PDFNet64» или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом.

это трассировки стека:

Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 
Running under executable C:\Program Files (x86)\IIS Express\iisexpress.exe 
--- A detailed error log follows. 

=== Pre-bind state information === 
LOG: User = COLLAB\mirko.lugano 
LOG: DisplayName = PDFNet64 
(Partial) 
WRN: Partial binding information was supplied for an assembly: 
WRN: Assembly Name: PDFNet64 | Domain ID: 2 
WRN: A partial bind occurs when only part of the assembly display name is provided. 
WRN: This might result in the binder loading an incorrect assembly. 
WRN: It is recommended to provide a fully specified textual identity for the assembly, 
WRN: that consists of the simple name, version, culture, and public key token. 
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue. 
LOG: Appbase = file:///c:/users/mirko.lugano/documents/visual studio 2012/Projects/WebApplication3/WebApplication3/ 
LOG: Initial PrivatePath = c:\users\mirko.lugano\documents\visual studio 2012\Projects\WebApplication3\WebApplication3\bin 
Calling assembly : (Unknown). 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: c:\users\mirko.lugano\documents\visual studio 2012\Projects\WebApplication3\WebApplication3\web.config 
LOG: Using host configuration file: C:\Users\mirko.lugano\Documents\IISExpress\config\aspnet.config 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). 
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/ccfa215a/dc93c54d/PDFNet64.DLL. 
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/ccfa215a/dc93c54d/PDFNet64/PDFNet64.DLL. 
LOG: Attempting download of new URL file:///c:/users/mirko.lugano/documents/visual studio 2012/Projects/WebApplication3/WebApplication3/bin/PDFNet64.DLL. 
ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated. 


Stack Trace: 


[BadImageFormatException: Could not load file or assembly 'PDFNet64' or one of its dependencies. An attempt was made to load a program with an incorrect format.] 
    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.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34 
    System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152 
    System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77 
    System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16 
    System.Reflection.Assembly.Load(String assemblyString) +28 
    System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38 

[ConfigurationErrorsException: Could not load file or assembly 'PDFNet64' or one of its dependencies. An attempt was made to load a program with an incorrect format.] 
    System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752 
    System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218 
    System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130 
    System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170 
    System.Web.Compilation.WebDirectoryBatchCompiler..ctor(VirtualDirectory vdir) +124 
    System.Web.Compilation.BuildManager.BatchCompileWebDirectoryInternal(VirtualDirectory vdir, Boolean ignoreErrors) +44 
    System.Web.Compilation.BuildManager.BatchCompileWebDirectory(VirtualDirectory vdir, VirtualPath virtualDir, Boolean ignoreErrors) +187 
    System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) +74 
    System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +299 
    System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +103 
    System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound) +165 
    System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp) +43 
    System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) +31 
    System.Web.UI.PageHandlerFactory.GetHandler(HttpContext context, String requestType, String virtualPath, String path) +37 
    System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +346 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155 


Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18033 

Я уже искал много в Интернете и в Google группах, и я уже пробовал эти решения (среди прочих), THIS и, например THIS

У меня на компьютере Windows 8 x64, и у меня есть установленный на Visual C++ 2010 x64 распространяемый дистрибутив. Я также попробовал консольные приложения, предоставленные образцами, загруженными с pdftron.com, и они работают нормально во всех версиях .NET. Я попытался создать консольное приложение самостоятельно, и это тоже работает на всех версиях .NET. Тогда я подумал, что это, возможно, ошибка сервера разработки VS2012, который работает в режиме x86, поэтому я настроил веб-сайт IIS и запустил его оттуда, но все тот же вопрос. Я немного лишен возможности, есть ли у кого-нибудь идеи? Thanx.

+0

На вашем сайте IIS попробуйте установить AppPool для запуска в 32-битном режиме. –

+0

Вы имеете в виду, что «Включить 32-разрядное приложение» в разделе «Дополнительные параметры» установлено значение «Истина»? Уже пробовал это, не повезло. Библиотека PDFNet, которую я использую, в любом случае - это x64 dll. –

ответ

6

Проблема была решена благодаря поддержке ребята @ pdftron.com. Here - это решение. В моем конкретном случае у меня был параметр пула приложений «Включить 32-разрядные приложения» в настройках IIS, установленном на «Истина», что каким-то образом противоречило версии x64 версии PDFNet.dll. Сброс его до ложного решения проблемы.

1

enter image description here

Делая "Copy Local" DLL установлен в True, решить мой случай. Пул приложений IIS также нуждается в 32-битной поддержке.

+0

Если все остальное не удается, попробуйте вручную скопировать файл в папку «Bin». Иногда это помогает и экономит ваше время при отладке. – SurenSaluka