Come fare riferimento a diverse versioni di dll con MSBuild

Ho un progetto di applicazione web che utilizza una serie di dll di terze parti. Il problema è che l’ambiente di sviluppo / staging è a 32 bit, ma la produzione è a 64 bit. In quanto tale, dobbiamo ri-riferire e build la soluzione ogni volta che vogliamo distribuire. Ora voglio automatizzarlo, ma non so come farlo con MSBuild?

Tutte le altre DLL sono le stesse, solo le 3 dll di terze parti.


MODIFICARE

Ho fatto alcuni progressi, tuttavia sto arrivando con alcuni problemi di assembly di runtime.

Ho 3 file dll, 1.dll, 2.dll, 3.dll. La versione del file è 5.1 per ciascuno. Per le DLL a 64 bit, i nomi sono esattamente gli stessi, solo le versioni dei file di differenza. Quello che ho fatto, è rinominato ciascuno a 1.v5.dll, 1.v6.dll ecc. Nei miei file di progetto, sto quindi facendo riferimento a ciascuna dll come segue:

 False bin\1.v5.dll False   False bin\1.v6.dll False  

Funziona in Visual Studio IDE e la mia soluzione compila il file, tuttavia quando vado a eseguire il sito Web, ottengo il seguente errore …

“Imansible caricare il file o l’assembly ‘1.v5’ o una delle sue dipendenze.La definizione manifest di assembly individuato non corrisponde al riferimento all’assembly.

Qualche idea su come affrontare questo?

È ansible creare riferimenti condizionali nel file di progetto in questo modo:

   

Per utilizzarlo all’interno di VS, devi creare due piattaforms di soluzioni: una per il target x86 e una per il target x64. A seconda della piattaforma triggers, verrà selezionata una delle DLL, senza necessità di rinvii.

Per automatizzare ciò usando msbuild, crea un nuovo file di progetto che costruisce l’altro file di progetto un certo numero di volte, ogni volta per una piattaforma / configurazione diversa / …:

      

Dai un’occhiata al riferimento alle attività di MSBuild per le opzioni aggiuntive come build in parallelo.

Questo è quello che ho capito e sembra non avere problemi.

Ho creato 2 piattaforms di soluzione, x86 e x64 . Ho creato una nuova cartella nella mia directory di soluzioni chiamata “Riferimenti” e ho creato n cartella x86 e x64: \ Riferimenti \ x86 \ \ Riferimenti \ x64 \ Le 3 DLL per ciascuna vengono quindi posizionate nelle rispettive directory.

Nel file di ciascun progetto, ho quindi aggiunto i seguenti riferimenti:

  ..\References\dlls\x86\{Reference1}.dll   ..\References\dlls\x64\{Reference2}.dll  

Ora, quando sviluppo all’interno dell’IDE, sto lavorando alla dll relativa alle mie esigenze.

Ho quindi appena aggiunto un evento post-build che copia la DLL basata sulla variabile $ (Platform) nella directory bin.