[c#] Il tipo o il nome dello spazio dei nomi non possono essere trovati


7 Answers

PrjForm è stato impostato su ".Net Framework 4 Client Profile" l'ho cambiato in ".Net Framework 4", e ora ho una build di successo.

Questo ha funzionato anche per me. Molte grazie. Stavo cercando un esempio RDF per dotNet dove ho scaricato il kit di dotnetrdf.

Profilo client NET4: indirizzare sempre il profilo client NET4 per tutte le applicazioni desktop client (incluse le app Windows Form e WPF).

NET4 Full framework: Target NET4 Full solo se le funzionalità o gli assembly necessari alla tua app non sono inclusi nel profilo del cliente. Questo include: Se stai creando app server, come:

  • App ASP.Net
  • Servizi Web basati su ASMX lato server

Se si utilizzano scenari client legacy, ad esempio: o Utilizzare System.Data.OracleClient.dll che è deprecato in NET4 e non incluso nel profilo client.

  • Utilizzare legacy Windows Workflow Foundation 3.0 o 3.5 (WF3.0, WF3.5)

Se hai scelto come target gli scenari di sviluppo e hai bisogno di strumenti come MSBuild o hai bisogno di accedere agli assembly di progettazione come System.Design.dll

Question

Questa domanda ha già una risposta qui:

Ho una soluzione C# con diversi progetti in Visual Studio 2010 . Uno è un progetto di test (lo chiamerò " PrjTest "), l'altro è un progetto di Windows Forms Application (lo chiamerò " PrjForm "). C'è anche un terzo progetto a cui fa riferimento PrjForm, che è in grado di fare riferimento e utilizzare con successo.

PrjForm fa riferimento a PrjTest e PrjForm ha una classe con un'istruzione using :

using PrjTest;
  1. Il riferimento è stato aggiunto correttamente
  2. using dichiarazione è correttamente in atto
  3. L'ortografia è corretta
  4. PrjTest costruisce con successo
  5. PrjForm quasi costruisce, ma rompe using PrjTest; allineare con l'errore:

Non è stato possibile trovare il nome dello spazio dei nomi 'PrjTest' (manca una direttiva using o un riferimento all'assembly?)

Ho provato quanto segue per risolvere questo:

  1. Rimosso Resharper (dal momento che Resharper non ha avuto problemi nel riconoscere il progetto di riferimento, ho pensato che valesse la pena provare)
  2. Rimosso e aggiunto nuovamente il riferimento e l'istruzione using
  3. Ricreato PrjForm da zero
  4. PrjForm risiede attualmente nella cartella PrjTest, ho provato a spostarlo in una cartella esterna
  5. Ha caricato la soluzione su un altro computer con una nuova copia di VS 2010

Ho fatto i miei compiti e ho speso troppo a lungo in cerca di una risposta online, nessuna delle soluzioni ha ancora aiutato.

Cos'altro potrei provare?




È anche possibile che i progetti di riferimento siano indirizzati a .NET 4.0, mentre il progetto app della console è destinato alla libreria client .NET 4.0.

Anche se potrebbe non essere stato correlato a questo caso particolare, penso che qualcun altro possa trovare utile questa informazione.




ho appena cambiato il framework di destinazione dell'applicazione in ".Net Framework 4".

E l'errore è scomparso.

in bocca al lupo; : D




Ho risolto il mio perché l'altro progetto era codificato con .NET 4.5 e l'altro era codificato 4.0




La dll compilata dovrebbe avere public Class.




controlla le proprietà del tuo progetto, i tuoi percorsi di riferimento dovrebbero essere vuoti come questo:

Saluti




L'istruzione using fa riferimento a uno spazio dei nomi , non a un progetto .

Assicurati di avere lo spazio dei nomi opportunamente chiamato nel tuo progetto di riferimento:

namespace PrjTest
{
     public class Foo
     {
          // etc...
     }
}

Maggiori informazioni su namespace su MSDN:




Per i riferimenti COM / ActiveX, VS 2012 mostrerà questo errore sull'utilizzo dell'istruzione. Il che è piuttosto divertente, dal momento che sta dicendo che potrebbe mancare una dichiarazione using.

Per risolvere questo: registrare la DLL effettiva COM / ActiveX anche se si trova nel progetto adiacente e aggiungere un riferimento tramite il canale COM, non il canale di progetto. Aggiungerà Interop.ProjectName invece di ProjectName come riferimento e questo risolve questo strano bug.




Related