Les paramètres.Par défaut.<propriété> renvoie toujours la valeur par défaut au lieu de la valeur en persistant de stockage (fichier XML)

J'ai récemment écrit une DLL en C# (.Net 2.0) qui contient une classe qui nécessite une adresse IP. Un co-travailleur de la mine altération de la classe pour récupérer l'adresse IP à partir d'un ".dll.config" (fichier XML -- Ce qui, apparemment, est généré automatiquement par l'Application "Paramètres" fichier qu'il a créé (Settings1.les paramètres). L'avantage de cette était de permettre à l'utilisateur de changer l'adresse IP dans le fichier XML/fichier de configuration.

Malheureusement, lorsque je vérifie son code de l'arbre, et essayez de compiler (ou d'utilisation) ce nouveau code, toute application à l'appel de cette DLL n'obtient la valeur par défaut, plutôt que de la valeur à partir du fichier.

Le constructeur qui appelle le fichier de configuration ressemble à ceci:

    public class form : System.Windows.Forms.Form
    {
        public form()
        {
            //This call is required by the Windows Form Designer.
            InitializeComponent();
            IP = IPAddress.Parse(Settings1.Default.IPAddress);
        }
    }

J'ai trouvé une référence à ce problème sur les forums MSDN où un utilisateur a dit:

les "anciens" des valeurs (celles que vous définissez au temps de développement) sont codés en dur. Si le franework n'est pas en mesure d'accéder ou d'ouvrir le fichier de config, il utilisera les paramètres par défaut à la place. Ce sera toujours le cas si vous utilisez les paramètres dans une dll.

  1. Est-ce à dire que je ne peut pas stocker une valeur externe d'une DLL dans un fichier de config? (Mon collègue a en quelque sorte fait ce travail...)

  2. Depuis mon cadre n'apparaît pas en mesure d'accéder ou d'ouvrir le fichier de config, comment puis-je savoir pourquoi ça ne fonctionne pas? Ou même de les détecter quand cela se produit?

Decker: Qui aide un peu. Malheureusement, je suis en train d'écrire cette DLL dans un cahier des charges, donc je n'ai pas réellement l'accès à l'Application fichier de configuration. Comme vous l'aurez remarque ci-dessus, mon co-travailleur de la création d'une section "Paramètres de1.paramètres de fichier". Je ne comprenais pas à l'époque, mais il semble maintenant que l'ajout de la "1" ne cesse il de l'paramètres de l'espace de toutes les applications qui l'appelle.

Je crois que je suis à essayer de comprendre est pourquoi la DLL n'a pas l'air de trouver le fichier de config assis à côté de lui dans le même répertoire. Le traçage par le code de l'étape-par-étape ne révèle rien.

En aparté, je peux changer le "Type de Sortie" de mon assemblée de la "Bibliothèque de classes" à "Application Windows" et d'ajouter les lignes suivantes au début de mon code de la DLL:

    [STAThread]
    public static void Main(string[] args)
    {
        System.Windows.Forms.Application.Run(new form());
    }

Lorsque je l'exécute, il génère un autre fichier de config (un ".exe.config") et que je peux le modifier et de l'avoir tirer les nouvelles données à partir du fichier. Donc je suis un peu confus. Des idées?

OriginalL'auteur Pretzel | 2008-10-10