powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / net core project appsetting by project config
19 сообщений из 19, страница 1 из 1
net core project appsetting by project config
    #40017533
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
В проектах .Net Core из коробки идет подбор настроек из appsetting{.environment}.json
Вопрос. Как сделать так, чтобы 3 копии сервиса могли находится на одном сервере (например 3 разных теста под разные офисы), но подтягивались соответствующие настройки для каждого свои. Учитывая что переменные окружения на сервере общие для всех четырех будут. Хочется чтобы все настройки были уже прописаны в проекте и при деплое их не было нужды менять.
т.е. по сути сделать зависимость appsettings.json от project (solution) configuration

В .net framework проектах использовался xml transform и там это делили конфигурациями Test BY/Test RU/Test KZ
При сборке в каждую папку конфигурации клались app.xml и применялись трансформации. Получалось 3 папки с одним файлом настроек.

А .net core проектах как я вижу отвязали от конфигурации конфиги, а привязали к окружению. Получается 1 папка с 3-мя файлами конфигурации. Но это хорошо когда 1 сервис 1 окружение. А у нас один сервер и 3 сервиса под разные офисы
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40017545
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
Добрый день.
В проектах .Net Core из коробки идет подбор настроек из appsetting{.environment}.json
Вопрос. Как сделать так, чтобы 3 копии сервиса могли находится на одном сервере (например 3 разных теста под разные офисы), но подтягивались соответствующие настройки для каждого свои. Учитывая что переменные окружения на сервере о бщие для всех четырех будут . Хочется чтобы все настройки были уже прописаны в проекте и при деплое их не было нужды менять.
т.е. по сути сделать зависимость appsettings.json от project (solution) configuration

В .net framework проектах использовался xml transform и там это делили конфигурациями Test BY/Test RU/Test KZ
При сборке в каждую папку конфигурации клались app.xml и применялись трансформации. Получалось 3 папки с одним файлом настроек.

А .net core проектах как я вижу отвязали от конфигурации конфиги, а привязали к окружению. Получается 1 папка с 3-мя файлами конфигурации. Но это хорошо когда 1 сервис 1 окружение. А у нас один сервер и 3 сервиса под разные офисы


Терзает смутное сомнение, что вы пытаетесь ввести нас в заблуждение самим рассказом, но с какой целью?
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40017553
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

Так проще...
Доработки редкие. Настройки меняются очень редко. При чем если меняют на сервере то меняют и в проекте. Собрал три билда и Ctrl+C Ctrl+V как есть на сервер каждую папку на свое место.
Не задумываясь тот конфиг там или не тот.
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40017555
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
Ролг Хупин,

Так проще...
Доработки редкие. Настройки меняются очень редко. При чем если меняют на сервере то меняют и в проекте. Собрал три билда и Ctrl+C Ctrl+V как есть на сервер каждую папку на свое место.
Не задумываясь тот конфиг там или не тот.


Вы как-то плохо объясняете.

3 копии сервиса на одном сервере, ну, в разных фолдерах, у кажого свой appsetting.json, в чем проблема?

Делать обратную зависимость файла от solution - это просто ненужный головняк.

Пример какой-то приведите
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40017558
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
X-Cite
Ролг Хупин,

Так проще...
Доработки редкие. Настройки меняются очень редко. При чем если меняют на сервере то меняют и в проекте. Собрал три билда и Ctrl+C Ctrl+V как есть на сервер каждую папку на свое место.
Не задумываясь тот конфиг там или не тот.


3 копии сервиса на одном сервере, ну, в разных фолдерах, у кажого свой appsetting.json, в чем проблема?


Как в проекте описать эти appsetting.json и положить туда настройки под каждый свои?
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40017562
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
Ролг Хупин
пропущено...


3 копии сервиса на одном сервере, ну, в разных фолдерах, у кажого свой appsetting.json, в чем проблема?


Как в проекте описать эти appsetting.json и положить туда настройки под каждый свои?



Есть такой анекдот
-------------
Маленькая девочка две недели готовилась к приходу Деда Мороза, учила
стишок, шила платьице и все такое. Новогодняя ночь, звонок в дверь.
Девочка с криком: "Я сама, сама открою!" бежит открывать дверь,
спотыкается и падает. Открывает дверь, хныкая и утирая сопли. На пороге
стоит румяный и пьяный в дым Дед Мороз. Дед Мороз радостным басом:
- Здравствуй, девочка, здравствуй милая. С Новым Годом тебя! А что же ты
плачешь?
Девочка сквозь слезы и слюни:
- Я тебя так ждала, дедушка, стишок учила, платьице шила, сейчас бежала
дверь открывать, упала, порвала платьице и стишок (рыдания) забы-ыла...
Дед Мороз с искренней грустью, разводя руками:
- Девочка, ну не ** же ж твою ****!
==========




Вариант:
Вы можете добавить в прожект один главный файл
appsettings.json
и
appsettings1.json
appsettings2.json
appsettings3.json

Главный содержит какую-то фигню общую для всех, если есть.
Приложение загружает два файла конфига
appsettings.json
и
appsettingХ.json
перед тем, определив Х

Или, если главный нахрен не нужен, тогда один с буквой Х.

Ну, как такое?
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40017572
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
Как в проекте описать эти appsetting.json и положить туда настройки под каждый свои?
можно отказаться от CreateDefaultBuilder, который добавляет appsetting.json и прочие файлы, и прописать свои источники конфигурации откуда угодно и в любом порядке
Вот тут все подробно описано
https://docs.microsoft.com/ru-ru/aspnet/core/fundamentals/configuration/?view=aspnetcore-3.1
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40017592
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин, Shocker.Pro,

Разница в том, что при билде все файлы будут лежать вместе с приложением...
А основной посыл, для каждого билда один свой конфиг.

Вообщем в старом проекте использовалось расширение к VS Configuration Transform которое позволяло делать так, как на картинке.
И при билде в папку помещался только один конфиг файл.

По тому что делает VS c json файлами и окружением я предположил что можно сделать также из коробки. Как-то привязать файлы к конкретному билду.


Т.е. вопрос надо было сформулировать по другому..
Как в зависимости от билда положить в папку только нужный json конфиг?
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40017611
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я головой понимаю, что использовать билды только для разделения настроек и деплоя - это немного попахивает..
Но сердце говорит, что пока надо так.

Одно из решений о котором я думал, это всем файлам конфига проставить Copy To Output Directory "Do not copy"
А в BuildEvents можно было бы прописать копирование с переименованием, но оно тоже одно на проект, не зависит от билда.

Мне вообще не понятен процесс доставки конфига, если к примеру он уже настроен в продакшене, и тут в конфиг добавили параметров.
Просто так заменить не нельзя, если параметры в проекте и в продакшене отличаются. Объяснять админам куда что они должны руками дописать тоже такое себе...
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40017615
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
для каждого билда
на скриншоте - конфигурации из выпадающего списка менеджера конфигураций. Если использовать правильные термины - тебя быстрее поймут.

Я лично использовать в этой ситуации вот такую добавку к проекту
Код: xml
1.
2.
3.
  <Target Name="CreateConfig" AfterTargets="AfterBuild">
    <Copy Condition="$(Configuration)!='Debug' AND $(Configuration)!='Release'" SourceFiles="AppSettings\$(Configuration).json" DestinationFiles="$(OutDir)\appsettings.deploy.json" />
  </Target>


Соответственно, appsettings.json содержит общие для всех настройки, а appsettings.deploy.json - копия файла, соответствующего выбранной конфигурации.
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40018079
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вообще что-то не пойму проблемы, которую обсуждают. Деплоишь вместе с appsettings.json все appsettings.BlaBlaBla.json, а потом перед запуском приложения/сервиса выбираешь нужный BlaBlaBla через
Код: powershell
1.
set ASPNETCORE_ENVIRONMENT=BlaBlaBla


или
Код: powershell
1.
export ASPNETCORE_ENVIRONMENT=BlaBlaBla


В коде менять ничего не надо - при дефолтных настройках все и так сработает.
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40018101
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Я вообще что-то не пойму проблемы
Ну на деплое понятно, ТС хочет, чтобы в студии при отладке работало, при этом взаимодействовало именно с конфигурациями
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40018124
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
fkthat
Я вообще что-то не пойму проблемы
Ну на деплое понятно, ТС хочет, чтобы в студии при отладке работало, при этом взаимодействовало именно с конфигурациями

В "Properties/launchSettings.json" создаешь соответствующий раздел в profiles

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  "profiles": {
     ......
     ......
    "FooApp/BlaBlaBla": {
      .......
      .......
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "BlaBlaBla"
      }
    }
  }


и при запуске выбираешь на панельке из выпадающего списка имя профиля "FooApp/BlaBlaBla". А если хочешь запускать из .NET CLI, то к "dotnet run" добавляешь параметр --launch-profile "FooApp/BlaBlaBla".
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40018167
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так блин, профиль и конфигурация - не одно и то же. ТС же пишет
X-Cite
Я головой понимаю, что использовать билды только для разделения настроек и деплоя - это немного попахивает..
Но сердце говорит, что пока надо так
Я ему ответил на ЕГО вопрос. А как правильно, он, судя по всему, и сам знает...
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40018180
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Так блин, профиль и конфигурация - не одно и то же.

Через профиль можно задать environment, а через environment конфигурацию. Или же я чего-то недопонимаю что еще надо.

ТСКак сделать так, чтобы 3 копии сервиса могли находится на одном сервере (например 3 разных теста под разные офисы), но подтягивались соответствующие настройки для каждого свои.

Я показал как.
Если проблема в этом:

ТСпеременные окружения на сервере общие для всех четырех будут.

то, могу разочаровать - "общими" они не будут. Переменные окружения копируются в процесс в момент его создания из родительского процесса, и никакие последующие их изменения никак ни на что не влияют.
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40018188
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
// Program.cs
using System;
Console.WriteLine($"Hello, {Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}!");
Console.ReadKey(true);


Код: powershell
1.
2.
3.
4.
5.
6.
# run.ps1
dotnet build
$env:ASPNETCORE_ENVIRONMENT = 'Foo'
Start-Process dotnet bin\Debug\net5.0\MultiEnv.dll
$env:ASPNETCORE_ENVIRONMENT = 'Bar'
Start-Process dotnet bin\Debug\net5.0\MultiEnv.dll


...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40018193
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще, кстати, можно ведь вообще и без переменных окружения обойтись. При запуске dotnet.exe просто задать ему опцию "--environment BlaBlaBla".
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40018276
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Через профиль можно задать environment, а через environment конфигурацию. Или же я чего-то недопонимаю что еще надо.
Конфигурация - это то, что у ТС на скрине. В выпадающем списке. Я именно её имею ввиду.
...
Рейтинг: 0 / 0
net core project appsetting by project config
    #40018349
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
fkthat
Через профиль можно задать environment, а через environment конфигурацию. Или же я чего-то недопонимаю что еще надо.
Конфигурация - это то, что у ТС на скрине. В выпадающем списке. Я именно её имею ввиду.

Так это та конфигурация, что указывает параметры сборки. Т.е. и деплоить надо в разные папки, и в чем тогда проблема в разные папки деплоить разные сеттингсы. Все это вообще оставляет впечатление какой-то изначальной кривизны и костылей, возможно, мы стали свидетелями появления на свет очередного WTFа.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / net core project appsetting by project config
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]