Tag: badimageformatexception

在64位窗口上运行x86包时,ClickOnce:BadImageFormatException

我的.NET 2.0应用程序导入非托管的32位dll。 当用户通过应用程序内的对话框打开文件时,将加载dll(第一次互操作调用)。 当我使用目标平台“Any”通过clickonce部署应用程序时,64位窗口上的用户在尝试从应用程序打开文件时(在加载非托管dll时)会收到BadImageFormatException。 我知道这是由于64位进程和32位非托管dll的不可比特的比特。 我使用x86作为目标平台重新部署了应用程序。 据我了解,这应该解决比特问题。 但 当我在64位系统上运行为x86构建的已部署应用程序时,我现在在应用程序启动之前立即获得BadImageFormatException。 至少测试了三台64位机器。 在32位机器上,它没有问题。 当我直接从VS运行应用程序时(或者不直接运行,只是正常构建,不通过ClickOnce),使用x86目标平台时64位窗口没有问题。 应用程序启动,用户可以加载文件 – 互操作调用成功。 我已经连续两天调试这个没有结果 – 我试过不同的电脑。 它似乎一直在我尝试的其中一台计算机上工作。 但是,我没有永久访问此计算机。 我已经设法在我的计算机上构建了一次ClickOnce部署,它可以在64位计算机上运行。 这可能只有100次尝试! 没有任何改变,唯一改变的变量是我在计算机重启后立即成功构建。 我做了很多次清理/重建/重启VS /重启Windows。 我重新安装了VS 2008,现在也是整个操作系统,它没有帮助。 编辑:我刚刚设法获得一个良好的构建(下一个100 🙂 :)并在部署的目录之间进行比较。 问题的根源是ClickOnce在主.exe的清单中生成错误的目标平台: <asmv1:assemblyIdentity name="app.exe" version="1.0.4.18" publicKeyToken=".token here." language="neutral" processorArchitecture="msil” type=”win32″ /> processorArchitecture应该是x86。 所以问题是如何在部署时一致地强制VS在清单中生成正确的processorArchitecture。 有人可以帮忙吗?

需要64位SQLite DLL用于托管C#应用程序

我正在尝试将SQLite嵌入到我的便携式C#.NET 2.0应用程序中,而不是将DLL文件包含在分发文件夹中。 但是,要嵌入SQLite,我不能使用PHXSoftware提供的混合模式库。 相反,我正在使用他们的“仅管理”版本。 这在32位计算机上运行良好,但是当它在64位计算机上运行时,会抛出格式exception。 正如我从这里发现的那样: http : //sqlite.phxsoftware.com/forums/p/2564/9939.aspx我需要在使用托管库之前先以所需的体系结构格式手动加载非托管sqlite3.dll。 这就是我失败的地方。 我找不到64位版本的SQLite以及32位版本。 有人可以帮忙吗? 我敢说,有没有人有更好的想法?

BadImageFormatException无法加载文件或程序集或其依赖项之一。 尝试加载格式不正确的程序

我的控制台应用程序(VS2012)引用了“dcasdk.dll”,我遇到了运行时错误。 控制台应用程序的.Net Framework是4.5,平台目标是“任何CPU”。 Could not load file or assembly ‘dcasdk, Version=1.0.1.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. An attempt was made to load a program with an incorrect format. 我使用CorFlags应用程序来检查dll的目标平台。 以下是详细信息.. Version : v4.0.30319 CLR Header : 2.5 PE : PE32 CorFlags : 16 ILONLY : 0 32BIT : 0 Signed : 0 根据上面的信息,我认为dll也是使用“Any […]

由NUnit项目引起的System.BadImageFormatException

今天是个好日子。 我整天都在工作中遇到同样的问题,并且正在努力寻找任何新的路径。 当我的解决方案在服务器上构建时,我收到以下错误。 我在解决方案中运行/调试所有测试没有问题,并且构建正常。 服务器和我的电脑都是x64。 我已经遵循了许多建议,但我发现这些建议都无济于事。 在所有配置下,我已将Platform Target设置为x86,用于我的解决方案中的所有项目。 我知道有一个nunit-console-x86.exe可能会有所不同,但我不知道在代码中指定这个位置。 请注意我已经开始上网了,如果我错过了什么,请道歉。 System.BadImageFormatException:无法加载文件或程序集 ‘Spin.TradingServices.DataAcquisition.Test.NUnit,Version = 1.0.12103.2060,Culture = neutral,PublicKeyToken = null’或其依赖项之一。 尝试加载格式不正确的程序。 文件名:’Spi​​n.TradingServices.DataAcquisition.Test.NUnit,Version = 1.0.12103.2060,Culture = neutral,PublicKeyToken = null’ 服务器堆栈跟踪:System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark&stackMark,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)在System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,Evidence) assemblySecurity,StackCrawlMark&stackMark,Boolean forIntrospection,Boolean suppressSecurityChecks)位于NUnit.Core.Builders.TestAssemblyBuilder.Load(String path)的System.Reflection.Assembly.Load(AssemblyName assemblyRef),位于NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName)位于NUnit.Core.Core.Tore上的NUnit.Core.Tore.Core.TestSuiteBuilder.Build(TestPackage包)的NUnit.Core.TestSuiteBuilder.BuildSingleAssembly(TestPackage包)中的NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName,String testName,Boolean autoSuites)上的布尔autoSuites) NUnit.Core.Proxy的.Core.SimpleTestRunner.Load(TestPackage包) 在System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md,Object []的NUnit.Core.moreTestRunner.Load(TestPackage包)的NUnit.Core.ProxyTestRunner.Load(TestPackage包)上的TestRunner.Load(TestPackage包) System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg,Int32 methodPtr,Boolean fExecuteInContext)中的args,Object server,Int32 methodPtr,Boolean fExecuteInContext,Object […]