簡體   English   中英

如何在 Visual Studio 2015 中的一個解決方案中跨多個 ASP.NET CORE 項目共享 appsettings.json 等配置文件?

[英]How can I share config file like appsettings.json across multiple ASP.NET CORE projects in one solution in Visual Studio 2015?

我在一個解決方案中有 3 個 ASP.NET CORE 項目,我想在這些項目之間共享一個配置文件(如 appsettings.json)中的連接字符串信息。

如何在 Visual Studio 2015 中執行此操作?

您可以像這樣在每個項目上使用絕對路徑(我假設appsettings.json文件位於解決方案根目錄中(如 global.json)):

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

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

設置共享 appsettings.json 文件的絕對路徑。

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

然后像這樣使用IFileProvider

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

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

或者像這樣使用SetBasePath

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();

盡管文件提供程序方法允許應用程序使用其內容根目錄作為其他靜態內容的基本路徑,但兩者都可以工作。 Adem的做法也不錯。

另一種選擇是使用用戶機密並讓應用共享相同的應用 ID。

作為獎勵,您可以將連接字符串保留在您的應用程序之外,並減少它們泄漏的機會,因為它們是在源代碼控制中推送的。

可能有更好的方法來執行此操作,但您可以通過向 project.json 文件添加預編譯設置來實現此目的。 類似於:

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

其中copycommand指向將 AppSettings.json 文件復制到當前目錄的批處理命令。 如果您的目標是多個平台,您可能需要為每個平台自定義命令。

添加一個包含 appsettings.json 文件的共享項目,該文件設置為“如果較新則復制”並從其他項目中引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM