msbuild – ODP Oracle.DataAccess.DLL引用32/64位
副标题[/!--empirenews.page--]
我有一个.NET 3.5程序集,引用在Visual Studio 2010中构建的ODP(Oracle.DataAccess.dll).复制Local = False,特定版本为false.路径是 C:[ORACLE_BASE]product11.2.0client_1ODP.NETbin2.xOracle.DataAccess.dll 版本为2.112.3.0,(运行时v.2.0.50727).我的开发机器上安装了ODAC 11.2.0.3.0 x86.当我构建这个项目并在集成测试中测试它时,一切正常并加载和使用ODP.我正在尝试使用MSBuild(通过Team City)在Windows Server 2003 x64计算机上的Team City 7上构建相同的集成测试.这台机器安装了相同版本的ODAC,但是x64版本. 尝试加载Oracle.DataAccess.dll时出现问题.它似乎正在寻找.NET 2版本,但首先找到.NET 4版本,然后不可避免地失败.查看日志,它找到了.NET 4版本,但仍然无法解析引用,并且似乎明确地在寻找x86版本. MSBuild的配置是: CSProject参考: <Reference Include="Oracle.DataAccess,Version=2.112.3.0,Culture=neutral,PublicKeyToken=89b483f429c47342,processorArchitecture=x86" /> (我尝试将Run Platform更改为x86,似乎接受了Oracle.DataAccess.DLL库,但抱怨所有其他核心.NET库都针对错误的平台,例如mscorlib 我也尝试通过rake脚本进行构建,该脚本使用msbuild构建项目解决方案,并获得类似的问题. 问题: [14:30:09]PrepareForBuild: [14:30:09] Creating directory "binDebug". [14:30:09]ResolveAssemblyReferences: [14:30:09] Unified primary reference "Oracle.DataAccess,Version=4.112.3.0,processorArchitecture=x86". [14:30:09] Using this version instead of original version "2.112.3.0" in "D:TeamCitybuildAgentworkf2ad3a714cc001baSourceMyProjMyProj.Data.OraclebinDebugMyProj.Data.Oracle.dll" because AutoUnify is 'true'. [14:30:09]C:WINDOWSMicrosoft.NETFrameworkv4.0.30319Microsoft.Common.targets(1360,9): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Oracle.DataAccess,processorArchitecture=x86". Check to make sure the assembly exists on disk. If this reference is required by your code,you may get compilation errors. [D:TeamCitybuildAgentworkf2ad3a714cc001baSourceMyProjMyProj.IntegrationTestsMyProj.IntegrationTests.csproj] [14:30:09] For SearchPath "D:TeamCitybuildAgentworkf2ad3a714cc001baSourceMyProjMyProj.Data.OraclebinDebug". [14:30:09] Considered "D:TeamCitybuildAgentworkf2ad3a714cc001baSourceMyProjMyProj.Data.OraclebinDebugOracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "D:TeamCitybuildAgentworkf2ad3a714cc001baSourceMyProjMyProj.Data.OraclebinDebugOracle.DataAccess.exe",but it didn't exist. [14:30:09] For SearchPath "{TargetFrameworkDirectory}". [14:30:09] Considered "C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.0Oracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.0Oracle.DataAccess.exe",but it didn't exist. [14:30:09] For SearchPath "{Registry:SoftwareMicrosoft.NETFramework,v4.0,AssemblyFoldersEx}". [14:30:09] Considered "C:Program Files (x86)MSBuildMicrosoft.Cppv4.0Platformsx64Oracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)MSBuildMicrosoft.Cppv4.0Platformsx64Oracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)MSBuildMicrosoft.Cppv4.0PlatformsWin32Oracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)MSBuildMicrosoft.Cppv4.0PlatformsWin32Oracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)MSBuildMicrosoft.Cppv4.0PlatformsItaniumOracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)MSBuildMicrosoft.Cppv4.0PlatformsItaniumOracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)MSBuildMicrosoft.Cppv4.0Oracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)MSBuildMicrosoft.Cppv4.0Oracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Reference AssembliesMicrosoftVSTAv9.0Oracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Reference AssembliesMicrosoftVSTAv9.0Oracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Microsoft Visual Studio 9.0Common7IDEPublicAssembliesOracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Microsoft Visual Studio 9.0Common7IDEPublicAssembliesOracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Common FilesMicrosoft SharedMSEnvPublicAssembliesOracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Common FilesMicrosoft SharedMSEnvPublicAssembliesOracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "D:ODAC_Baseproduct11.2.0client_1ODP.NETbin2.xOracle.DataAccess.dll",but its name "Oracle.DataAccess,PublicKeyToken=89b483f429c47342" didn't match. [14:30:09] Considered "D:ODAC_Baseproduct11.2.0client_1ODP.NETbin2.xOracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Microsoft Chart ControlsAssembliesOracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Microsoft Chart ControlsAssembliesOracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "D:ODAC_Baseproduct11.2.0client_1ASP.NETbin2.xOracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "D:ODAC_Baseproduct11.2.0client_1ASP.NETbin2.xOracle.DataAccess.exe",but it didn't exist. [14:30:09] For SearchPath "{AssemblyFolders}". [14:30:09] Considered "C:Program Files (x86)Microsoft SQL Server100SDKAssembliesOracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Microsoft SQL Server100SDKAssembliesOracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Microsoft.NETADOMD.NET100Oracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Microsoft.NETADOMD.NET100Oracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Microsoft SQL Server100SDKAssembliesOracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Microsoft SQL Server100DTSTasksOracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Microsoft SQL Server100DTSTasksOracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Microsoft SQL Server100DTSPipelineComponentsOracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Microsoft SQL Server100DTSPipelineComponentsOracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "c:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5Oracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "c:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5Oracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.0Oracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.0Oracle.DataAccess.exe",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Microsoft SQL Server100DTSForEachEnumeratorsOracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "C:Program Files (x86)Microsoft SQL Server100DTSForEachEnumeratorsOracle.DataAccess.exe",but it didn't exist. [14:30:09] For SearchPath "{GAC}". [14:30:09] Considered "Oracle.DataAccess,processorArchitecture=x86",which was not found in the GAC. [14:30:09] For SearchPath "binDebug". [14:30:09] Considered "binDebugOracle.DataAccess.dll",but it didn't exist. [14:30:09] Considered "binDebugOracle.DataAccess.exe",but it didn't exist. [14:30:09]GenerateTargetFrameworkMonikerAttribute: 解决方法我遇到过同样的问题.问题出在服务器上的MsBuild版本中.我使用的是Msbuild 4.0,它使用的是v4.0运行时而不是MsBuild 3.5中使用的2.0.xx.尽可能尝试使用Msbuild 3.5.如果没有,请检查您的GAC是否正确安装了ODP.我不记得我是如何为MSBuild 4.0修复它的,但我必须使用GAC程序集和machine.config. 这是我在64位构建服务器上的Oracle.DataAccess.dll的GAC列表: 这是machine.config的一部分.我不得不添加程序集重定向: (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |