Publish from private repository
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
namespace MyOffice.Shared;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
public static class SharedConfiguration
|
||||
{
|
||||
public const string BaseFileName = "appsettings.shared.json";
|
||||
|
||||
/// <summary>
|
||||
/// Adds shared JSON sources to an existing configuration builder (base + environment overlay).
|
||||
/// </summary>
|
||||
public static IConfigurationBuilder AddSharedAppSettings(
|
||||
this IConfigurationBuilder builder,
|
||||
string environmentName,
|
||||
string? basePath = null,
|
||||
bool optional = false,
|
||||
bool reloadOnChange = true
|
||||
)
|
||||
{
|
||||
basePath ??= AppContext.BaseDirectory;
|
||||
|
||||
builder
|
||||
.AddJsonFile(Path.Combine(basePath, BaseFileName), optional: optional, reloadOnChange: reloadOnChange)
|
||||
.AddJsonFile(
|
||||
Path.Combine(basePath, $"appsettings.shared.{environmentName}.json"),
|
||||
optional: true,
|
||||
reloadOnChange: reloadOnChange);
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Builds a standalone configuration for design-time tools (EF migrations, etc.).
|
||||
/// Layering: base shared → environment shared → environment variables.
|
||||
/// </summary>
|
||||
public static IConfiguration Build(string? environmentName = null)
|
||||
{
|
||||
environmentName ??= Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")
|
||||
?? Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT")
|
||||
?? "Production";
|
||||
|
||||
return new ConfigurationBuilder()
|
||||
.SetBasePath(AppContext.BaseDirectory)
|
||||
.AddSharedAppSettings(environmentName, optional: false, reloadOnChange: false)
|
||||
.AddEnvironmentVariables()
|
||||
.Build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="appsettings.shared.json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="appsettings.shared.Development.json" CopyToPublishDirectory="Never">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
|
||||
</Content>
|
||||
<Content Include="appsettings.shared.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
|
||||
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
|
||||
</Content>
|
||||
<Content Include="appsettings.shared.Production.json" CopyToPublishDirectory="Never">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
|
||||
</Content>
|
||||
<Content Include="appsettings.shared.Docker.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
|
||||
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="10.0.10" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="10.0.10" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="10.0.10" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"ConnectionStrings": {
|
||||
"npgsql": "Host=postgres;Port=5432;Database=myoffice;Username=myoffice;Password=myoffice"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ConnectionStrings": {
|
||||
"sqlite": "Filename=AppDbContext.Dev.db",
|
||||
"mssql": "",
|
||||
"npgsql": ""
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user