C# .NET 4.0对错误Oracle.DataAccess.dll的引用
当我使用CruiseControl.NET构建服务器构建C#应用程序时,它总是引用错误的Oracle.DataAccess.dll。在我的本地机器上,它工作没有任何问题 我的本地计算机和生成服务器都是Windows 7计算机。我在这两台机器上都安装了Oracle Client 11.2.0.3(32位和64位)。 我的应用程序是.NETFramework4.0C#应用程序。我将OracleDataAccess.dll的特定版本和本地副本设置为false 当我在本地机器上构建它时,一切正常。 我使用IL反汇编程序分析了该文件,这里的参考是确定的:C# .NET 4.0对错误Oracle.DataAccess.dll的引用,c#,.net,oracle,cruisecontrol.net,C#,.net,Oracle,Cruisecontrol.net,当我使用CruiseControl.NET构建服务器构建C#应用程序时,它总是引用错误的Oracle.DataAccess.dll。在我的本地机器上,它工作没有任何问题 我的本地计算机和生成服务器都是Windows 7计算机。我在这两台机器上都安装了Oracle Client 11.2.0.3(32位和64位)。 我的应用程序是.NETFramework4.0C#应用程序。我将OracleDataAccess.dll的特定版本和本地副本设置为false 当我在本地机器上构建它时,一切正常。 我使
.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引用,看起来一切正常。在一整天试图找出错误后,我不知道如何继续。请,有人能帮我解决这个问题吗?在您的
*.csproj
中编辑您对ODP.NET的引用,如下所示:
<Reference Include="Oracle.DataAccess">
<SpecificVersion>False</SpecificVersion>
<Private>False</Private>
</Reference>
错误的
错误的
不需要像
Version=…
或processorArchitecture=…
这样的属性。您的应用程序将加载正确的Oracle.DataAccess.dll
,具体取决于所选的体系结构和目标.NET framework(前提是安装正确)作为调试步骤,我建议在运行生成时对包含Oracle.DataAccess.dll
的任何路径使用筛选器。这将帮助您识别加载此DLL的所有位置。MSBuild进程将同时加载这两个位置,即2。。和4。。版本2.112.3.0是从C:\Windows\assembly加载的,4.112.3.0是从C:\Windows\Microsoft.NET\assembly\GAC\U加载的。我删除了这些字段,但它没有改变任何内容。它仍然参考了2.112.3.0版本。我将尝试在服务器上安装Visual Studio,这可能有助于我了解DLL的加载方式。在服务器上安装Visual Studio很可能是一种过度操作(而且可能也不起作用)。看看这个:我们创建了一个构建服务器的副本,我试着做了你文章中描述的事情,但仍然使用了错误的Oracle.DataAccess.dll。我现在在新的构建服务器副本上安装了Visual Studio。在这里,我看到Oracle.DataAccess的版本是2.112.3.0,而不是4.112.3.0。我打开了和我以前在本地机器上打开的完全相同的项目,在我的机器上它引用了4。。。在生成服务器上,它引用了2。。。非常奇怪…请提供以下所有设置:应用程序的体系结构(x64或x86)、.NET Framework的目标版本、已安装Oracle客户端的体系结构和版本、GAC的内容,例如从Visual Studio Developer命令提示符运行gacutil/l Oracle.DataAccess
。体系结构:x86(但x64存在相同问题),.NET Framework 4.0---已安装Oracle客户端11.2.0.3 x86和x64---gacutil/l Oracle.DataAccess返回:Microsoft(R).NET全局程序集缓存实用程序。版本4.0.30319.17929版权所有(c)Microsoft Corporation。好的。全局程序集缓存enthält die folgenden程序集:Oracle.DataAccess,版本=2.112.3.0,区域性=中性,PublicKeyToken=89b483f429c47342,processorArchitecture=x86 Oracle.DataAccess,版本=4.112.3.0,区域性=中性,PublicKeyToken=89b483f429c47342,processorArchitecture=x86