2010-11-10 6 views
0
static void Main() 
{ 
    AppHelper helper = new AppHelper(); 
    // more stuff 
} 

Le compile ci-dessus en utilisant bien csc.exe mais jette NullReferenceException à l'exécution: Exception non gérée: System.NullReferenceException: référence d'objet non définie à une instance d'un objet. à AppHelper..ctor()NullReferenceException en ligne instanciation appelant nouvelle

public class AppHelper 
{ 
    private string connect = System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ToString(); 

    public AppHelper() 
    { 
     // TODO 
    } 
} 

débogueur localise connectionString de app.config mais exécutant les selfs exécutables.

+0

Quelle est la déclaration de classe entière? Quel est le numéro de ligne dans la trace de la pile? – SLaks

Répondre

6

Vous avez du code dans le constructeur AppHelper ou ses initialiseurs de champ en ligne qui utilise une référence null.

Si vous exécutez votre code dans le débogueur, où cela casse-t-il?

+0

Oh vous me battez à elle. +1 – Aliostad

+0

Ne casse pas dans le débogueur. Ne casse que lorsque j'exécute l'exécutable. Semble être un problème avec string privé connect = System.Configuration.ConfigurationManager.ConnectionStrings ["connectionString"]. ToString(); C'est comme si l'exécutable ne pouvait pas localiser le fichier de configuration. Cependant, lorsque je compile, j'indique csc /appconfig:app.config. – Suz

1

Faites-vous quelque chose dans le constructeur de la classe AppHelper?

+0

Eh bien, il ne semble pas avoir seulement commentaire TODO là-bas. – Aliostad

+0

non, le constructeur est comme vu – Suz

0

Le code est correct. Le problème est ailleurs ou le code est différent.

La seule chose à laquelle je peux penser est que vous avez des initialiseurs en ligne dans la classe, par exemple.

public class AppHelper 
{ 

    string something = null; 
    int somethingLength = something.Length; 

    public AppHelper() 
    { 
     // TODO 
    } 
0

Vous devez copier app.config dans $ {exeName} .exe.config. C'est ainsi que j'ai résolu le problème à la fin.