Asp.net 使用Oracle.DataAcces.dll将Visual Studio web应用程序部署到IIS

Asp.net 使用Oracle.DataAcces.dll将Visual Studio web应用程序部署到IIS,asp.net,oracle,Asp.net,Oracle,我一直在尝试使用Oracle.DataAcces.dll部署web应用程序。 web服务器安装了64位Oracle客户端,我使用32位,因为Visual Studio需要它。 当应用程序部署到服务器时,我得到以下错误。 异常详细信息:System.BadImageFormatException:无法加载文件或程序集“Oracle.DataAccess”或其依赖项之一。试图加载格式不正确的程序 经过研究,我决定在Visual Studio中将Oracle.DataAcces.dll引用设置为Cop

我一直在尝试使用Oracle.DataAcces.dll部署web应用程序。 web服务器安装了64位Oracle客户端,我使用32位,因为Visual Studio需要它。 当应用程序部署到服务器时,我得到以下错误。 异常详细信息:System.BadImageFormatException:无法加载文件或程序集“Oracle.DataAccess”或其依赖项之一。试图加载格式不正确的程序

经过研究,我决定在Visual Studio中将Oracle.DataAcces.dll引用设置为Copy Local=false。这样,32位的Oracle.DataAcces.dll就不会出现在web应用程序的bin文件夹中,web应用程序将在服务器上使用64位版本。我的平台目标设置为任何CPU


然而,这导致了同样的错误。所以如果有人知道答案,请帮助。。。我不明白发生了什么。

我将Oracle.DataAcces.dll引用设置为Copy Local=false 并将*.csproj文件引用从

<Reference Include="Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86" />



问题已解决。

假设您使用的是64位Windows“AnyCPU”,则意味着您的应用程序将以64位模式运行-即使是为了调试,无论您的Visual Studio是否为32位应用程序

这还需要64位版本的Oracle客户端和ODP.NET提供程序

这就是为什么引用
不起作用的原因,它强制加载32位ODP.NET

您可以将引用编写为

<Reference Include="Oracle.DataAccess" >
   <SpecificVersion>False</SpecificVersion>
   <Private>False</Private>
</Reference>

错误的
错误的
False
映射到Visual Studio GUI中的
Copy Local=False


有了此引用,无论您是编译到“x86”、“x64”还是“AnyCPU”,它都应该在您的本地计算机和目标服务器上的每种情况下都能工作。您甚至可以将.NET Framework更改为其他版本,例如,
.NET Framework 2.0
,而无需对代码进行任何更改。所有这些工作都需要正确安装相应的Oracle客户端和ODP.NET,即架构(32位对64位)必须匹配,ODP.NET的主要版本(1.x或2.0或4.0)必须匹配.NET Framework的主要版本。

谢谢Wernfried。。。我试试你的建议。
<Reference Include="Oracle.DataAccess" >
   <SpecificVersion>False</SpecificVersion>
   <Private>False</Private>
</Reference>