I progetti .NET "Any CPU" devono essere associati alle DLL Framework o Framework64?
Domanda
Ho un progetto Visual Studio C # (.csproj) che ha un riferimento alla versione Framework64 di System.Data
. Quando provo a creare utilizzando MSBuild / Team Foundation Server (TFS) su un altro computer, ha esito negativo poiché non esiste la DLL a 64 bit.
Dovrei legarmi alla versione Framework, o questo mi limiterà quando eseguo su macchine a 64 bit? .NET reindirizza il binding per utilizzare 64 bit quando possibile?
Soluzione
Penso che intendi Qualsiasi CPU nella tua domanda, giusto? Supponendo che sia così, impegnarsi senza riguardo per il testimone è la strada da percorrere in quasi tutte le circostanze.
Ricorda che .NET è JITed (compilato Just In Time) - che significa codice a 32 e 64 bit da un C # o VB.NET è lo stesso, indipendentemente dall'architettura su cui si intende eseguire. Quando il codice è JIT in fase di esecuzione, è allora che diventa 32 o 64 bit.
In alcune situazioni, devi pensare all'architettura di destinazione. Un caso specifico potrebbe essere qualsiasi riferimento / dipendenza su COM - DLL wrapper, .NET Framework fornito o altrimenti. Dato che questi file DLL verranno contrassegnati (nel caso di COM) come solo 32 bit (poiché COM è solo architettura a 32 bit) se non fossero contrassegnati come 32 bit, l'interoperabilità con COM non funzionerebbe. Pertanto, poiché sono esplicitamente contrassegnati, anche i risultati del tuo progetto dovrebbero essere.