当我使用CruiseControl.NET Build Server构建我的C#应用程序时,它总是引用错误的Oracle.DataAccess.dll。在我的本地机器上它没有任何问题。
我的本地计算机和构建服务器都是Windows 7计算机。我在两台机器上安装了Oracle Client 11.2.0.3(32位和64位)。 我的应用程序是.NET Framework 4.0 C#应用程序。我将OracleDataAccess.dll的特定版本和本地副本设置为false。
当我在本地机器上构建它时,一切正常。 我使用IL-Disassembler分析了文件,这里的引用是好的:
.assembly extern Oracle.DataAccess
{
.publickeytoken = (89 B4 83 F4 29 C4 73 42 ) // ....).sB
.ver 4:112:3:0
}
当我在构建服务器上构建它时,我的应用程序引用了错误的OracleDataAccess.dll。 在这里我得到了这个参考:
.assembly extern Oracle.DataAccess
{
.publickeytoken = (89 B4 83 F4 29 C4 73 42 ) // ....).sB
.ver 2:112:3:0
}
项目中的所有引用都指向4 ...版本。我重新安装了32位和64位oracle客户端。我检查了构建服务器上的所有oracle引用,一切看起来都很好。在试图找到错误的一整天后我不知道如何继续。拜托,有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
在*.csproj
编辑您对ODP.NET的引用,如下所示:
<Reference Include="Oracle.DataAccess">
<SpecificVersion>False</SpecificVersion>
<Private>False</Private>
</Reference>
不需要Version=...
或processorArchitecture=...
等属性。您的应用程序将加载正确的Oracle.DataAccess.dll
,具体取决于所选的体系结构和目标.NET框架(前提是它已正确安装)