相关疑难解决方法(0)

"即使平台相同,也试图加载格式不正确的程序"

我在64位系统上调用32位非托管DLL的函数.我得到的是:

BadImageFormatException:尝试加载格式不正确的程序.(HRESULT异常:0x8007000B)

起初,我将我的项目设置为Any CPU平台,因此我将它们都更改为x86,但此错误仍在发生.这真的是我所知道的唯一解决方案.

DLL没有损坏或任何东西,因为我可以将它们与其他程序一起使用(我没有源代码).我想也许它没有找到依赖,但我检查了,他们都在那里.另外,DllNotFoundException在这种情况下不会抛出一个吗?

我还可以做些什么?在您说"使用64位非托管DLL"之前,让我指出没有一个.;)

.net 64-bit pinvoke 32-bit badimageformatexception

448
推荐指数
11
解决办法
46万
查看次数

如何解释CorFlags标志?

我如何解释CorFlags标志以及如何使用它来确定.NET程序集是为x86还是x64构建的?

可能是以下情况?

corflags MyAssembly.dll
Run Code Online (Sandbox Code Playgroud)

corflags

52
推荐指数
4
解决办法
3万
查看次数

如何确定编译可执行文件的平台?

我需要使用为x86,x64和IA64制作的Windows可执行文件.我想通过检查文件本身以编程方式找出平台.

我的目标语言是PowerShell,但C#示例可以.如果您知道所需的逻辑很好,那么其中任何一个都会失败.

c# powershell cpu-architecture

50
推荐指数
5
解决办法
3万
查看次数

检查非托管DLL是32位还是64位?

如何在C#中以编程方式告诉非托管 DLL文件是x86还是x64?

c# dll 64-bit 32-bit

43
推荐指数
3
解决办法
3万
查看次数

如何判断.NET程序集是否编译为x86,x64或任何CPU

发现(无法访问源项目).NET程序集DLL是否编译为"x86","x64"或"任何CPU"的最简单方法是什么?

更新:命令行实用程序足以满足我的直接需求,但仅仅是为了完整性,如果有人想告诉我如何以编程方式执行它,那么这也是有意义的,我敢肯定.

.net x86-64 visual-studio

31
推荐指数
2
解决办法
1万
查看次数

我如何在.NET中使用Oracle?

不幸的是,我正在尝试使用.NET中的Oracle,这就像回到1997年.正确解释事情是一个弱点的迹象,注册表和环境变量似乎具有特色.

所以这是我有多远.

我在Oracle.com上填写了一份关于我生活的大表,然后下载了

ODBC Windows 64位实例客户端,11.2.0.3.0并将其压缩到一个文件夹中. 基本的Windows 64位Instant Client,11.2.0.3.0并将其解压缩到与上面相同的文件夹中.

我运行了安装.exe(没有MSI,记得这是1997).

我添加了一个TNS_NAMES环境变量,指向网络共享上的公司TNSNames.ora文件,并在控制面板中设置一个快速DSN并运行测试 - 它工作正常!

然后我下载了最新的ODP.NET for .NET 4.0的XCOPY版本,并将其复制到我的源代码控制工作区下的Dependencies文件夹中.

我从我的项目添加了一个引用到Dependencies\odp.net4\odp.net\bin\4\Oracle.DataAccess.dll

我读过,我需要让管理ODP.NET东西,知道在哪里可以找到其非托管Oracle库,我猜是依赖\ odp.net4\BIN\OraOps11w.dll但它可能是一些其他的Oracle二进制文件某处?

现在我正在设置一个名为DllPath的配置文件参数.遗憾的是,Oracle文档似乎没有意识到.NET配置文件需要在configSections部分中连接它们的部分.

这是配置文件部分.

<oracle.dataaccess.client>
  <add key="DllPath" value="D:\Trunk\Dependencies\odp.net4\bin" />
</oracle.dataaccess.client>
Run Code Online (Sandbox Code Playgroud)

configSection中有什么内容?我在这上面找到的几个线程给出了一个例子,然后说"我不知道应该是什么类型",这是主要的一点!

任何人都可以建议我吗?有没有人知道从.NET查询Oracle视图的傻瓜指南的链接?

我能在1997年做些什么来阻止自己在2012年使用Oracle吗?

UPDATE

只是一个快速更新.我已将OraOps11w.dll复制到我的输出bin文件夹中,并删除了我之前添加的任何web.config文件更改.

我现在得到以下错误,我正在研究.

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

其他一些论坛说说在GAC,这我很希望避免注册Oracle.DataAccess.dll - 我无法看到其中的差别是什么呢,但我给它一个去.

更新2

在GAC中注册Oracle.DataAccess.dll库没有任何区别,我已取消注册.

工作周的结束在我身上,我要赶火车,但是我在这里通过电子邮件发送的另一开发团队,并希望他们并肩作战之前(而不是用于夜间提取其他人一样).

更新3

今天早上我下载并安装了64位版本的IIS Express 8.0 RC.VS2010不支持64位版本,因此需要从命令行运行.这很简单,通过查看任务管理器,我能够看到VS用于iisexpress.exe*32的命令行.

不幸的是,当浏览到由64位IIS Express托管的我的站点时,我收到此错误.

处理程序"ExtensionlessUrl-Integrated-4.0"在其模块列表中有一个错误的模块"ManagedPipelineHandler"

这个问题在这个问题上太过分了,所以我将尝试使用32位版本的ODP.NET.

更新4

我下载了32位版本的完整安装,但是当我看到Oracle Universal Installer时我感到很害怕.与我珍贵的开发盒相信它看起来太过90年了.所以我使用的是32位'XCopy'客户端,这让我可以打开我网站的主页,因此引用正在运行.感谢那些暗示架构不匹配32/64问题的人.

现在我在实例化一个新的OracleConnection时正在研究这个错误.

提供程序与Oracle客户端版本不兼容

更新5我想我已经做到了.

所以我下载了32位最新的11g"Instant Client",并将它放在我的\ Dependencies文件夹中,用于解决方案中继代码库.我将此文件夹添加到%PATH%系统环境变量中,并将OraOps11w.dll文件放入其中.

最后,_oracleConnection = new OracleConnection(connectionString)不会抛出!现在我需要确保在我部署生产时我在桌子上放了一瓶Laphroaig.

因此,回顾一下,对于Windows 7,64上的IIS Express 7.5(这是一个32位进程):

  • 将32位11g"Instant Client"下载并解压缩到某个文件夹,然后将此位置添加到PATH中.Oci.dll是主要的Oracle客户端非托管库.

  • 下载并将32位ODP.NET解压缩到某个文件夹.

  • 将OraOps11w.dll复制到Instant …

.net c# oracle

26
推荐指数
2
解决办法
2万
查看次数

CorFlags.exe在哪里?(.NET Framework工具)

我在哪里可以找到CorFlags.exe工具?我完全搜索了我的硬盘驱动器,但没有找到.

我有:.NET Framework 4.0,Visual C#2010 Express,Visual C++ 2010 Express.操作系统是Windows 7旗舰版32位.

.net-4.0 corflags visual-studio-2010

24
推荐指数
1
解决办法
3万
查看次数

无法让sql server compact 3.5/4与ASP .NET MVC 2一起使用

我正在使用Visual Studio 2008 Pro.

我可能在这里遗漏了一些非常明显的东西,但我一直在努力让Sql Server compact 4的CTP在我的asp.net mvc应用程序中运行.我可以找到没有关于如何设置它或一个工作示例应用程序的说明.我的目标是私有安装,所以我可以将它包含在我的网络应用程序中,而无需在我的域托管上进行sql server设置.这真的只是我拍摄微风并试图解决这个问题.我不打算举办市场或其他任何事情.

所以,我已经将基本4.0方向安装的所有dll(c:\ Program Files\Sql Server compact\v4.0)复制到我的应用程序中的lib文件夹中.我已将副本设置为输出方向选项为'Copy if Newer'.然后,我引用System.Data.SqlServerCE dll并将"Copy Local"设置为True.

我通过Sql Studio Express创建了一个sdf文件.一个重要的注意事项是我没有看到创建此文件的CE 4.0版本的选项,因此它是使用CE 3.5创建的.我创建了几个表,向这些表添加几行,将*.sdf文件复制到我的App_Data目录.值得一提的是,从VS 2008内部来看,这个文件永远不会出现在我的项目中,但它确实存在于App_Data目录的物理位置.我不确定为什么会这样.

接下来,我只是尝试通过以下方式与我的sdf文件建立基本连接:

SqlCeConnection conn = new SqlCeConnection("DataSource=rpg.sdf");
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8402. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.
Run Code Online (Sandbox Code Playgroud)

我想从这里开始,我只是尝试让Sql CE 3.5工作.我将本地安装的Sql CE 3.5升级到sp2.我在基本位置复制dll(c:\ Program Files\Sql Server compact\v3.5),包括从我的项目引用中删除和读取System.Data.SqlServerCE dll的版本.

这里奇怪的是当我右键单击并查看引用的SqlServerCE dll的属性时,它总是说它的版本是4.0.0.1.

伙计们,我真的可以在这里使用一些方向.我搜索了堆栈溢出,帮助文档,在线书籍和谷歌搜索.我真的没有找到任何从CE 3.5或4.0的顶部采取这个,并告诉我究竟要添加什么dll,在哪里放置它们,如何引用它们,如何将.sdf文件添加到我的项目中,连接到它,并从中查询.我确实遇到过一些IBuySpy门户示例应用程序的提及应该使用Sql …

c# asp.net sql-server-2005 sql-server-ce asp.net-mvc-2

22
推荐指数
2
解决办法
4万
查看次数

此DLL是托管还是非托管?

我在你面前拿着一个DLL.仅使用Win32 SDK,您能告诉我这个DLL是否是.NET程序集吗?

为什么?我们的应用程序以DLL的形式加载插件.我们正在尝试扩展这些插件的定义以允许.NET程序集,但接口将是不同的,因此加载器将需要知道DLL在加载之前是管理还是非管理.

.net dll assemblies unmanaged managed

18
推荐指数
3
解决办法
1万
查看次数

为什么在Windows x64上IntPtr.size为4?

我想当我使用IntPtr.Size时我应该得到8.但是我仍然使用Widnows 7 x64在x64机器上获得4个,为什么?

c# pinvoke

18
推荐指数
3
解决办法
1万
查看次数