Aktualizacja: For current (new) .csproj format atrybut CopyToPublishDirectory
powinny być stosowane. To określa, czy aby skopiować plik do katalogu publikowania i może mieć jedną z następujących wartości:
- zawsze
- PreserveNewest
- Nigdy
Więc dodać kolejny rozdział do swojej .csproj
:
<ItemGroup>
<None Include="appsettings.Production.json" CopyToPublishDirectory="Always" />
</ItemGroup>
Zajrzyj do @nover answer i SO Exclude or include files on publish, aby uzyskać więcej informacji o kontroli pliku podczas publikowania.
„W pliku project.json
masz sekcję publishOptions
z podpunktem include
, gdzie masz już jakieś pliki typu "appsettings.json":.
"publishOptions": {
"include": [
"appsettings.json",
"hosting.json",
"project.json",
"web.config"
]
},
Należy dodać "appsettings.Production.json"
do tej tablicy
Aktualizacje na podstawie komentarzy:
Należy pamiętać, że wszystkie pliki appsettings.*.json
, takie jak appsettings.development.json
, appsettings.staging.json
i appsettings.production.json
, zawsze będą widoczne we wszystkich środowiskach. Nie można po prostu obsłużyć tego przy użyciu project.json
, ponieważ nie obsługuje żadnych reguł warunków. Zostanie to zmienione w przyszłości, gdy project.json
będzie replaced back na msbuild
i .csproj
. Jeśli ma to krytyczne znaczenie dla Twojej aplikacji, rozważ użycie innego magazynu konfiguracji, takiego jak Zmienna środowiskowa, baza danych itp.
Pamiętaj, że kolejność jest ważna, ponieważ ustal, które ustawienia zostaną zastosowane, jeśli istnieją w wielu lokalizacjach. Od documentation:
Kolejność określania źródeł konfiguracji jest ważna, ponieważ ustanawia to pierwszeństwo, z jakim będą stosowane ustawienia, jeśli istnieją one w wielu lokalizacjach.W poniższym przykładzie, jeśli to samo ustawienie istnieje zarówno w appsettings.json, jak iw zmiennej środowiskowej, zostanie użyte ustawienie ze zmiennej środowiskowej. Ostatnie źródło konfiguracji określiło "wygrywa", jeśli ustawienie istnieje w więcej niż jednej lokalizacji. Zespół ASP.NET zaleca określenie zmiennych środowiskowych jako ostatnich, aby środowisko lokalne mogło przesłonić wszystko, co ustawione w wdrożonych plikach konfiguracyjnych.
Dlaczego w ogóle trzeba opublikować 'project.json'? – Pawel
Ale nie łączy ustawienia opartego na profilu publikowania? Zawsze czyta klucz, który znajduje się w appsettings.json, a nie appsetting.release.json. –
W moim przypadku ustawienia z profilu publikowania są łączone z moimi appsettings.Production.json @BarbarosAlp – Riscie