2009-05-12 12 views
6

Actualmente nuestro código .net no es específico del procesador, pero depende de las bibliotecas (Oracle/ODP.Net) que lo son. Hemos encontrado una solución donde editamos directamente el archivo csproj y colocamos las referencias en grupos de artículos con una cláusula de condición basada en nuestra configuración de compilación seleccionada. Tenemos depuración/publicación de 32 bits y depuración/liberación de 64 bits, y los ensamblajes correctos son referencias cuando construyes esa configuración.Referencias condicionales

Esto funciona más o menos en tiempo de compilación, pero causa todo tipo de rareza en Visual Studio (2008). El resultado final es que el mismo conjunto aparece cuatro veces debajo de las referencias, y tres tienen el signo de exclamación amarillo. También genera unas 76 advertencias de las que no me puedo deshacer. Intentamos apuntar a 0 advertencias porque queremos saber cuándo aparecen nuevas, así que esto es un problema.

¿Alguien está al tanto de una solución a las referencias condicionales que le permiten parecer una sola referencia (que realmente es) y no llena mis advertencias en tiempo de compilación?

Respuesta

1

La única cosa que salta a la mente es tener 4 archivos de proyecto separadas ... pero antes de entrar en pánico por tener que mantener 4 archivos cuando cada vez que agrega una clase, se puede utilizar otro csproj truco aquí:

<Compile Include="**\*.cs" /> 

que (IIRC) dice "incluir todos los archivos cs en cualquier nivel en la estructura de carpetas".

1

Encontramos una respuesta que era un poco diferente de lo que estábamos buscando, pero me gusta. Si se agrega esto a su archivo de configuración bajo tiempo de ejecución-> assemblyBinding

 
<dependentAssembly> 
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" /> 
<bindingRedirect oldVersion="2.111.6.20" newVersion="2.111.6.0" /> 
</dependentAssembly> 

A continuación, las versiones de 64 bits y de 32 bits funcionan con la misma construcción. Todo lo que tenemos que hacer es no copiar Oracle.DataAccess.dll localmente cuando lo implementamos y dejarlo extraerlo del GAC.

Gracias!