2016-07-09 77 views

risposta

2

Potrebbe esserci un modo migliore per farlo, ma è possibile ottenere ciò aggiungendo un'impostazione di precompilazione al file project.json. Qualcosa di simile a:

"scripts": { 
    "precompile": [ "../copycommand.bat" ] 
} 

Dove le copycommand punti ad un comando batch che copia il vostro file di AppSettings.json nella directory corrente. Se hai scelto come target più piattaforme, probabilmente dovrai personalizzare il comando per ciascuna piattaforma.

7

È possibile utilizzare il percorso assoluto su ogni progetto come questo (presumo appsettings.json file si trova nella directory principale soluzione (come global.json)):

var settingPath = Path.GetFullPath(Path.Combine(@"../../appsettings.json")); // get absolute path 
var builder = new ConfigurationBuilder() 
     .SetBasePath(env.ContentRootPath) 
     .AddJsonFile(settingPath); 

vedere https://github.com/aspnet/Configuration/issues/440

2

Un'altra opzione è quella di usa user secrets e le app condividono lo stesso ID app.

Come bonus, ottieni le stringhe di connessione al di fuori della tua app e diminuisci le possibilità che si verifichino perdite perché sono state inserite nel controllo del codice sorgente.

3

Impostare il percorso assoluto per il file appettings.json condiviso.

var relativePath = @"../../The/Relative/Path"; 
var absolutePath = System.IO.Path.GetFullPath(relativePath); 

Quindi utilizzare un IFileProvider come questo.

var fileProvider = 
    new Microsoft.Extensions.FileProviders.PhysicalFileProvider(absolutePath); 

_configuration = new ConfigurationBuilder() 
    .SetBasePath(_env.ContentRootPath) 
    .AddJsonFile(fileProvider, $"appsettings.json", optional: true, reloadOnChange: true) 
    .Build(); 

Oppure utilizzare SetBasePath come questo.

var relativePath = @"../../The/Relative/Path"; 
var absolutePath = System.IO.Path.GetFullPath(relativePath); 

_configuration = new ConfigurationBuilder() 
    .SetBasePath(absolutePath) 
    .AddJsonFile($"appsettings.json", optional: true, reloadOnChange: true) 
    .Build(); 

Entrambi funzioneranno, se l'approccio provider di file consente all'applicazione di utilizzare la sua radice contenuto come il percorso di base per altri contenuti statici. Anche l'approccio di Adem è buono.

Problemi correlati