
Προσπαθώ να αφηρημένες από όλες τις κώδικα της βάσης δεδομένων σε μια ξεχωριστή βιβλιοθήκη και στη συνέχεια να χρησιμοποιήσετε αυτήν τη βιβλιοθήκη σε όλες κωδικό μου. Όλες οι συνδέσεις βάσης δεδομένων γίνεται με τη χρήση πληκτρολογήσει TableAdapters που έχω δημιουργήσει με μεταφορά και απόθεση σε σύνολα δεδομένων σε VS2005, χρησιμοποιώντας μια σειρά σύνδεση από τις appSettings.


Το πρόβλημα που δεν ήταν σε θέση να λύσει είναι ότι .Net δεν διαδίδουν τις βιβλιοθήκες appSettings στον άλλο πρόγραμμα που το χρησιμοποιεί.


Εν ολίγοις, έχω μια βιβλιοθήκη επίπεδο της βάσης δεδομένων, MyProgram.DbLayer, το οποίο χρησιμοποιείται από άλλα έργα, όπως MyProgram.Client κ.λπ. Όταν είχα όλα τα σύνολα δεδομένων στην .Client η ConnectionString ήταν MyProgram.Client.exe.config έτσι ώστε θα μπορούσα να το αλλάξετε μετά την κατασκευή. Όταν μεταφέρθηκε στο MyProgram.DbLayer ότι η ρύθμιση δεν Διαθέσιμες για μένα αφού είχα χτίσει τα δυαδικά αρχεία.


EDIT: Αυτό φαίνεται να είναι ένα γενικότερο θέμα με ApplicationSettings.


Αυτό που παρατήρησα ήταν ότι αν το χέρι προσθέσετε μια ρύθμιση που χρησιμοποιείται μόνο σε μια βιβλιοθήκη θα διαβάσει σωστά. Το μόνο πράγμα που χρειάζεται τώρα είναι η ρύθμιση που θα συμπεριληφθεί αυτόματα στο αρχείο .config, καθώς και.

 
ApplicationSettings σε όλη βιβλιοθήκες
======================================



AppSettings / ConnectionStrings θα είναι πάντα να διαβαστούν από τον τρέχοντα πισίνα app.


Με αυτό εννοώ:


Αν έχω `A.exe`οποία έχει μια τάξη `DAL.cs`. DAL.cs διαβάζει ένα string σύνδεση από config, και επιστρέφει `"abc"`με τον αναμενόμενο τρόπο.


Στη συνέχεια μετακινήστε DAL.cs στο δικό του έργου του, και ως εκ τούτου, τη δική του συνέλευση. Μπορώ ακόμα να το έχουν καλέσει τη συμβολοσειρά σύνδεσης από app.config, όμως, **θα πρέπει να «φιλοξενούν» το συγκρότημα σε μια εφαρμογή που εκτελείται, και προσθέστε τη συμβολοσειρά σύνδεσης του εν λόγω αιτήσεις εφαρμογή ρυθμίσεων** . Έτσι, μπορώ να δημιουργήσω ένα νέο app.config και να καθορίσετε τη συμβολοσειρά σύνδεσης `"xyz"`σε αυτό, όταν τρέχει, τρέχει όπως αναμενόταν.


Τώρα, αν μπορώ να αλλάξω την αναφορά στο `A.exe`έργο να χρησιμοποιήσει το νέο `DAL.dll`, string ποια σχέση πιστεύεις ότι θα έχει; `"xyz"`; Οχι! Θα χρησιμοποιήσετε το `"abc"`όπως έκανε πριν, διότι αυτό εξακολουθεί να διαμορφώνεται στο αρχείο ρύθμισης παραμέτρων εφαρμογής για `A.exe`.


Ξέρω ότι αυτό λειτουργεί, επειδή χρησιμοποιείται από κοινού κωδικό DAL σε πολλές των Windows **και** τις εφαρμογές Web.


Εάν οποιαδήποτε από αυτό είναι ασαφείς, ή δεν βοηθά το πρόβλημά σας, παρακαλώ ενημερώστε με σχολιάζοντας αυτήν την απάντηση.


### Ενημέρωση παρακάτω σχόλιο από Ε.Π.


Με τον όρο «υποδοχής» Θέλω να πω μια εφαρμογή που καλεί το κοινό κώδικα. Αυτό μπορεί να είναι έναν υπολογιστή με Windows ή μια εφαρμογή Web, ουσιαστικά είναι το πλαίσιο εφαρμογής.


Θα χρειαστεί να δημιουργήσετε καταχωρήσεις στα αρχεία ρυθμίσεων για κάθε εφαρμογή που χρησιμοποιεί το κοινό κώδικα. Αν κατάλαβα καλά το αρχικό σας ερώτημα (απολύτως εφικτό, αυτό είναι μια μεγάλη μέρα!) Και θέλετε να συγκεντρώνει τη διαμόρφωση, καθώς, τότε θα πρέπει να:


* Δημιουργήστε κάποια μορφή κεντρικής αποθήκευσης (είτε πρόκειται για XML, η DB, οτιδήποτε).
* Βελτιώστε την κοινή κωδικό σας για να έχετε προκαθορισμένες τιμές ώστε να μπορεί να συνδεθεί με την κεντρική αποθήκευση.
* Από εκεί, ο κώδικας μπορεί στη συνέχεια να ρυθμίσετε τον εαυτό της, με βάση τις πληροφορίες στο κατάστημα διαμόρφωση.


Η ελπίδα αυτό βοηθά :)

 

Αν καταλαβαίνω το πρόβλημά σας σωστά, ακούγεται σαν θα χρειαστείτε 


1.) Ένα κοινό πλαίσιο εφαρμογής για όλες τις κλήσεις πρόσβασης δεδομένων


ή


2.) Ένας διαφορετικός τρόπος πρόσβασης ρυθμίσεις


1: Τυλίξτε επιπέδου δεδομένων σας σε μια υπηρεσία που εκτελείται σε ένα ενιαίο πλαίσιο (IIS, τα Windows Υπηρεσία, κλπ)


2: Μην χρησιμοποιείτε το μηχανισμό διαχείρισης ρύθμισης παραμέτρων που σας παρέχονται. Αντί να χρησιμοποιήσετε αρχεία ακίνητο σε μια συγκεκριμένη θέση.


Μην ξεχνάτε όμως ότι οι ρυθμίσεις καταρράκτη από διάφορα επίπεδα. Για παράδειγμα ... αν προσθέσετε μια ρύθμιση στο machine.config, τότε κάθε εφαρμογή που τρέχει σε αυτό το μηχάνημα θα χρησιμοποιήσει αυτήν τη ρύθμιση, εκτός αν αντικατασταθεί σε χαμηλότερο επίπεδο ... Αυτό μπορεί να είναι ένας καλός τρόπος για να στήσετε ένα τυποποιημένο περιβάλλον μέσα σας αρχεία ρυθμίσεων.

 