ODP Oracle.DataAccess.DLL référence 32/64 bits

J'ai un .NET 3.5 assemblée que les références de l'ODP (Oracle.DataAccess.dll), la construction dans Visual Studio 2010. Copie Locale = Faux, Version Spécifique est faux. Le chemin est

C:\[ORACLE_BASE]\product.2.0\client_1\ODP.NET\bin.x\Oracle.DataAccess.dll

La version est 2.112.3.0, (Runtime v. 2.0.50727). J'ai ODAC 11.2.0.3.0 x86 installé sur ma machine de développement. Quand j'ai construit ce projet et de le tester dans un test d'intégration, tout fonctionne bien et ODP est chargé et utilisé. Je suis en train de construire le même test d'intégration de l'Équipe de la Ville 7, sur un Serveur Windows server 2003 x64-linge, à l'aide de MSBuild (via l'Équipe de la Ville). Cette machine a la même version de l'ODAC installé, mais la version x64.

Il y a un problème en essayant de charger l'Oracle.DataAccess.dll. Il semble qu'il cherche .NET 2 version, mais trouve d'abord le .NET 4 version, puis échoue inévitablement. En regardant les logs, il trouve le .NET 4 version, mais ne peut toujours pas résoudre la référence et semble être explicitement à la recherche pour la version x86. La configuration pour MSBuild est:
MSBUILD Version: .NET 4.0
Exécution Plate-forme x86.

CSProject référence:

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

(J'ai essayé de changer les Exécuter Plate-forme x86, et semble accepter le Oracle.DataAccess.DLL bibliothèque, mais se plaint que tous les autres .NET les bibliothèques sont le ciblage de la mauvaise plate-forme, par exemple, mscorlib

J'essaie aussi de faire un build via un râteau de script qui utilise msbuild pour construire le projet de la solution, et d'obtenir des problèmes similaires.

Questions:
Comment puis-je obtenir ce pour construire correctement sur ma machine x64? Le x86 et le x64 versions des bibliothèques ont la même PublicKeyToken, donc, ne devrait-elle pas de travail? Peut une Référence balise dans un CSProj être mis à la cible "any CPU" plutôt que d'être explicitement x64 (en éditant manuellement le fichier)? Ou, est-il possible de mettre en place un moyen pour conditionnellement référence à une bibliothèque de fonction sur la machine de compilation de l'architecture, comme le montre ici (pas exactement quel est le problème, mais cela peut être une solution)?

[14:30:09]PrepareForBuild:
[14:30:09]  Creating directory "bin\Debug\".
[14:30:09]ResolveAssemblyReferences:
[14:30:09]  Unified primary reference "Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86".
[14:30:09]      Using this version instead of original version "2.112.3.0" in "D:\TeamCity\buildAgent\work\f2ad3a714cc001ba\Source\MyProj\MyProj.Data.Oracle\bin\Debug\MyProj.Data.Oracle.dll" because AutoUnify is 'true'.
[14:30:09]C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, 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:\TeamCity\buildAgent\work\f2ad3a714cc001ba\Source\MyProj\MyProj.IntegrationTests\MyProj.IntegrationTests.csproj]
[14:30:09]          For SearchPath "D:\TeamCity\buildAgent\work\f2ad3a714cc001ba\Source\MyProj\MyProj.Data.Oracle\bin\Debug".
[14:30:09]          Considered "D:\TeamCity\buildAgent\work\f2ad3a714cc001ba\Source\MyProj\MyProj.Data.Oracle\bin\Debug\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "D:\TeamCity\buildAgent\work\f2ad3a714cc001ba\Source\MyProj\MyProj.Data.Oracle\bin\Debug\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          For SearchPath "{TargetFrameworkDirectory}".
[14:30:09]          Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          For SearchPath "{Registry:Software\Microsoft\.NETFramework,v4.0,AssemblyFoldersEx}".
[14:30:09]          Considered "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Itanium\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Itanium\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\VSTA\v9.0\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\VSTA\v9.0\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "D:\ODAC_Base\product.2.0\client_1\ODP.NET\bin.x\Oracle.DataAccess.dll", but its name "Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" didn't match.
[14:30:09]          Considered "D:\ODAC_Base\product.2.0\client_1\ODP.NET\bin.x\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft Chart Controls\Assemblies\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft Chart Controls\Assemblies\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "D:\ODAC_Base\product.2.0\client_1\ASP.NET\bin.x\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "D:\ODAC_Base\product.2.0\client_1\ASP.NET\bin.x\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          For SearchPath "{AssemblyFolders}".
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft SQL Server0\SDK\Assemblies\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft SQL Server0\SDK\Assemblies\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft.NET\ADOMD.NET0\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft.NET\ADOMD.NET0\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft SQL Server0\SDK\Assemblies\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft SQL Server0\SDK\Assemblies\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft SQL Server0\DTS\Tasks\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft SQL Server0\DTS\Tasks\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft SQL Server0\DTS\PipelineComponents\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft SQL Server0\DTS\PipelineComponents\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft SQL Server0\DTS\ForEachEnumerators\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "C:\Program Files (x86)\Microsoft SQL Server0\DTS\ForEachEnumerators\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]          For SearchPath "{GAC}".
[14:30:09]          Considered "Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86", which was not found in the GAC.
[14:30:09]          For SearchPath "bin\Debug\".
[14:30:09]          Considered "bin\Debug\Oracle.DataAccess.dll", but it didn't exist.
[14:30:09]          Considered "bin\Debug\Oracle.DataAccess.exe", but it didn't exist.
[14:30:09]GenerateTargetFrameworkMonikerAttribute:

OriginalL'auteur Stealth Rabbi | 2012-02-28