Suppongo di avere due progetti, P4 e P3, rivolti rispettivamente a. 4.0 e 3.5.La mia app .Net può fare riferimento a due diverse versioni di una libreria .net framework?
Ogni progetto ha anche un riferimento a System.Data. Nel caso della P4, sarà a System.Data v4.0.0.0 Nel caso della P3, sarà a System.Data v2.0.0.0
Progetto P4 fa riferimento anche P3.
Se P4 è caricato ed eseguito, utilizza. NET 4.0 CLR. In fase di runtime, i riferimenti a System.Data sembrano risolversi nella versione v4.0 sia in P4 che in P3. Posso sovrascriverlo usando i reindirizzamenti assemblyBinding, ma poi sia P4 che P3 risolvono con v2.0.
C'è un modo per configurare la mia applicazione in modo che P4 usi v4.0 e P3 usi v2.0?
Ho provato questo, ma senza fortuna. P3 esegue ancora v4.0. Sai se questa impostazione avrebbe alcun effetto visibile nell'assieme generato per P3? Per esempio. Il manifest dice ".ver 2: 0: 0: 0" se "Versione specifica" è impostata su true o no. – Rob
Sì, questo è quello che ho seguito seguendo il consiglio di Seb. Inoltre, dovevo specificare useLegacyV2RuntimeActivationPolicy = "true" come attributo nel tag di avvio. Altrimenti si è arrestato in modo anomalo con Eccezione non gestita: System.BadImageFormatException – Rob
Impressionante. Il suo collegamento è stato ciò che mi ha ricordato la config, quindi accetto decisamente la sua risposta. – Randolpho