Domanda

Vedo uno strano fenomeno in Visual Studio 2010.

La configurazione del mio progetto è questa (l'ho ereditata - non posso cambiarla a breve, sfortunatamente :-():

  • un'app Winforms che utilizza Crystal Reports X (v10) come motore di reporting;la CR X Developer Edition completa è installata sul mio dispositivo di sviluppo

  • diverse app Webforms che utilizzano Crystal Reports XI (v11) come motore di reporting - non è possibile installare la versione completa di CR XI, poiché è in conflitto con CR X Dev Edition....

Per far funzionare le cose sul nostro server di build, ho anche creato un file Library all'interno della directory del progetto dell'app Winforms con i file runtime CR X di cui ho bisogno, oltre a un file Library cartella all'interno della directory del progetto dell'app Web con i file di runtime CR XI.

In VS 2008, ho potuto selezionare gli assembly necessari dalla rispettiva cartella della libreria nei miei progetti Winforms (diverse librerie di classi, ecc.) e nelle mie app web.Tutto ha funzionato alla grande.

Quando ho aggiornato a Visual Studio 2010, ora all'improvviso vedo:

  • nelle mie app Winforms, tutti i riferimenti ai file runtime CR X vengono aggiornati automaticamente per utilizzare i file CR X dal GAC: questo è non quello che voglio!Non aiuta se elimino quei riferimenti e li aggiungo di nuovo accedendo al file Library cartella - quando li seleziono, VS2010 sembra convertirli nuovamente automaticamente in riferimenti GAC...

  • nelle mie app Web, le cose peggiorano ancora:quando scelgo gli assembly runtime CR XI dal file Library cartella, ancora una volta, VS2010 sembra rilevare automaticamente che ci sono file simili (stesso nome, ma versioni diverse) nel GAC e utilizza invece quei file - ora le mie app Web non funzionano più .....

Che cavolo sta succedendo con VS 2010??Perché non può lasciare invariate le mie selezioni e lasciarmi scegliere i file di runtime da un file Library cartella invece di insistere per andare al GAC??Cosa è cambiato tra VS 2008 e VS 2010 a questo riguardo?Qualcuno ha qualche intuizione in merito??

È stato utile?

Soluzione

Potrebbe essere utile a entrambi

(1) vai a Strumenti\Opzioni\Project&Solutions\Build&Run e modifica la verbosità di MSBuild in "diagnostica", quindi crea e nella finestra di output controlla come funziona la logica di risoluzione dei riferimenti di MSBuild per tali assembly.Cioè, se VS non ha già fatto qualcosa di ridicolo al file .csproj sottostante

(2) confrontare l'XML nel file di progetto VS2008 con il file di progetto VS2010 per vedere cosa c'è nel file <Reference> nodi

Un'ipotesi speculativa selvaggia:il progetto VS2010 ha come target ".NET 4.0 Client" (anziché ".NET 4.0 (framework completo)" e le librerie necessitano del framework completo e MSBuild vede questa dipendenza e utilizza la logica di fallback.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top