2014-04-01 22 views
11

Ho due progetti nella mia soluzione, per questo esempio li chiamerò progetto A e B.Accesso ad altre proprietà app.config di un progetto?

Riferimenti del progetto B. A. Il progetto B può accedere alle proprietà app.config del progetto A?

desidero accedere a una stringa chiave app all'interno del app.config di A.

string tfsUri = ConfigurationManager.AppSettings["TfsUri"]; 

risposta

13

Questo non è generalmente una buona idea, come si introduce dipendenze duri tra i progetti. Quindi, se è possibile copiare e incollare il valore di configurazione, ciò renderà i propri progetti autosufficienti (tuttavia, questo introduce la duplicazione del valore di configurazione).

È anche possibile automatizzarlo, in modo che quando si crea un progetto la dipendenza di configurazione venga automaticamente risolta.

Detto questo, ci sono altre opzioni, e in ogni caso potresti preferire usare qualcos'altro. Le altre opzioni sono:

+0

grazie per questa risposta esauriente! – Adrian

-5

Non è possibile accedere alle proprietà nel Progetto A dal Progetto B senza avere lo stesso valore nel file di configurazione del Progetto A.

2
 var path = @"C:\Users\Stephen\source\repos\SensurityConfigurationTool\Configuration.UI\App.config"; 
     string directory = Path.GetDirectoryName(path); 
     var pathRoot = Path.GetPathRoot(directory); 
     string file = Path.GetFileName(path); 


     ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap 
     { 
      ExeConfigFilename = Path.Combine(Path.GetFullPath(directory + "\\" + file)) 
     }; 

     System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 

È fondamentalmente ottenere il percorso relativo, quindi convertire questo ad un percorso assoluto