2015-05-14 33 views
9

Questo è in un'applicazione Web ASP.Net, con Visual Studio 2013. La soluzione è composta da diversi progetti. Ho il codice in un progetto di libreria che ha using System.Transactions e ha funzionato bene per mesi.Il nome dello spazio dei nomi 'Transactions' non esiste nello spazio dei nomi 'System'

Oggi ho aggiunto lo stesso using System.Transactions nel codice nel progetto di applicazione web, e non riesce con il seguente messaggio di errore:

The type or namespace name 'Transactions' does not exist in the namespace 'System' 

qui ci sono alcune cose che ho provato:

  • Aggiunto un riferimento a System.Transactions.
  • Verificare che il file dll di riferimento sia lo stesso in entrambi i progetti.
  • Modificato il framework da 4 a 4.5 e viceversa.
  • Verificato che tutti i progetti utilizzano la stessa versione di framework.
  • Pulita e ricostruita la soluzione.
  • Esci da Visual Studio, elimina tutti i file in AppData> Locale> Temp, ricostruito.
  • Riavviato il PC.

Quindi, il risultato è che using System.Transactions funziona correttamente in un progetto ma non in un altro, anche se entrambi i progetti sono nella stessa soluzione.

Qualche suggerimento?

EDIT: Ecco una stranezza che probabilmente non è di alcun aiuto ulteriore, ma qui va:

  • Quando costruisco il progetto, non ci sono errori. Cioè, il using System.Transactions compila bene.
  • Se eseguo un'applicazione, bombarda e l'errore appare nella finestra del browser. La finestra del codice VS non mostra ancora errori.
  • Se si modifica lo using System.Transactions o si aggiunge codice come var x = System..., gli errori vengono immediatamente visualizzati nello using System.Transactions.

** MODIFICA: ** Questa domanda è stata contrassegnata come duplicata. Non è - il duplicato proposto ha risolto la questione passando al riferimento. L'avevo già provato e non è stato d'aiuto. Nel mio caso, ho dovuto usare l'opzione "copia locale".

+0

Entrambi i progetti sono rivolti alla stessa piattaforma? Potrebbe essere un tentativo lungo ma forse un progetto x64 sta tentando di fare riferimento a un assembly x86 o viceversa. Di solito quando succede qualcosa del genere a me, i passaggi che hai preso avrebbero risolto il problema. – Colin

+0

Buona domanda. Ho controllato tutti i progetti nella soluzione e tutti mirati "Qualsiasi CPU". E i riferimenti sono entrambi alla DLL x86. –

+1

Per curiosità, cosa succede se si modifica in modo esplicito l'output di build del progetto di app Web su x86? Il riferimento appare rotto nel progetto in Visual Studio? Ci sono messaggi di errore utili nella finestra Output durante la costruzione? – Colin

risposta

0

si riferiscono a questo Answer By Mark Hall

C'è un Microsoft Connect entry posted per questo. C'è un commento che suggerisce che puoi cercarlo. Il percorso è data:

C: \ Program Files (x86) \ Riferimento Assemblies \ Microsoft \ Framework.NETFramework \ v4.5 \ System.Transactions.dll

Basta aggiungere riferimento si naviga a questo percorso

se ciò non ha funzionato, andare su Riferimenti -> Sistema.Transazioni e assicurarsi sulle proprietà per questo riferimento che "Copia locale" è impostato su Vero.

+0

L'ho provato, e ho ancora lo stesso problema. –

+0

Puoi provare questo ... Vai a References -> System.Transactions e assicurati sulle proprietà per questo riferimento che "Copy Local" è impostato su True. –

+1

Ha funzionato, yay! Ho provato girando "Copia locale", ha fallito di nuovo; accenderlo e funziona. Questa sembra una buona risposta, grazie! Una cosa è solo una curiosità: nell'altro progetto di libreria in questa soluzione, "Copia locale" è disattivato e lo è sempre stato, e viene compilato correttamente. Non sono sicuro del perché c'è una differenza, ma starò zitto e sarò felice. –

1

solito System.Transactions non è una parte del tuo riferimenti, provare ad aggiungere nei tuoi riferimenti da:

fare clic destro sul vostri riferimenti se si utilizza applicazioni Web o nel vostro progetto se si utilizza sito web. trova System.Transactions nei riferimenti .NET. Dovresti trovare System.Transactions nei tuoi riferimenti.

+0

Grazie, ma questa è stata la prima cosa che ho provato (vedi post originale). Ciò che ha funzionato per me è stato impostare "Copia locale" sul riferimento a "true". Vedi i commenti di Hussein Khalil nella sua risposta. –

Problemi correlati