2010-08-04 8 views
5

Ho varie versioni di .NET Framework (versioni da 1.1 a 4.0) installate su una macchina remota che esegue XP Professional. Ho installato Reactive Extension anche per buona misura.Perché System.Threading.dll potrebbe mancare da Windows Assembly?

Ho anche un programma che funziona sulla mia macchina perché fa riferimento System.Threading trovato qui: C: \ Program Files \ Microsoft reattiva Extensions \ redist \ desktopV2 \ System.Threading.dll

ho due versioni della DLL nel GAC anche.

due domande:

i) Perché Visual Studio decidere che questa è la versione (esempio) per fare riferimento quando ho scelto dalla lista, piuttosto che la navigazione per il file?

ii) Perché System.Threading non esiste sulla macchina remota? (ho pensato che fosse una parte fondamentale del quadro)

Grazie

risposta

8

System.Threading.dll è stata aggiunta in .NET 4.0 (anche se il namespaceSystem.Threading è in circolazione dalla v1). Rx include una versione di System.Threading.dll che è stata trasferita su .NET 3.5 SP1.

Sembra che il tuo targeting sia .NET 3.5. In questo caso, il runtime non caricherà System.Threading.dll 4.0 (ovviamente). Il caricamento non sarebbe riuscito a meno che non si includesse la versione Rx di System.Threading.dll insieme al programma.

di rispondere alle domande direttamente:

  1. Rx registra le proprie directory private come estensioni quadro. Questo è come è stato trovato da VS.
  2. System.Threading.dll è incluso solo in .NET 4.0, quindi se si sta prendendo di mira un framework precedente, non verrà trovato.

Per risolvere il problema, è necessario che il programma abbia come destinazione .NET 4.0 o che includa il file System.Threading.dll di Rx insieme al programma.

P.S. Raccomando l'aggiornamento all'ultima versione di Rx. La cartella desktopV2 non è stata utilizzata per le ultime versioni. Durante l'aggiornamento, disinstallare prima la vecchia versione: funziona meglio in questo modo.

+1

+1: picchiami. –

+0

Fisso. Le modifiche alle immagini possono richiedere fino a 24 ore. Inoltre, che ne pensi di un aiuto con la dll mancante? – ofraski

+0

@sarfeast: se scegli come target .NET 4.0, quindi la DLL verrà caricata correttamente dal GAC. Se si sceglie .NET 3.5, includere quindi la versione Rx della DLL. –

0

i) L'elenco di riferimento dovrebbe mostrare tutte le versioni di componenti registrati, si sia selezionato quella particolare versione, o se non è nella lista , deve essere stato non registrato o rimosso.

ii) System.Threading esisteva since framework 1 e, se non è presente sulla macchina, deve essere stato annullato o rimosso.

Non so estensioni reattivi, e dopo alcune ricerche non riesco a trovare molte informazioni se lo fa rimuovere System.Threading.dll

+0

i) Sono d'accordo ii) Sono sicuro al ~ 90% che questa DLL non sia stata registrata o rimossa. Non riesco a pensare perché sarebbe successo. – ofraski

Problemi correlati