2016-12-12 5 views
0

Учитывая конфигурацию с именем «Data: ConnectionString» в файле appsettings.json (приложение ASP.NET Core), как мне переопределить это в сборке? Переопределяя это может быть либо то, что есть шаг, который изменяет значение в appsettings.json перед компиляцией во время сборки, или что я переопределяю параметр при использовании «теста dotnet» или что-то еще.Управление конфигурацией в сборках без конвертируемых конфигураций конфигурации

Подробнее:

У меня есть приложение ASP.N Co, со стандартной конфигурацией в appsettings.json. Я не хочу, чтобы в исходном элементе проверялась строка подключения или конфиденциальные данные.

Я создаю свое приложение с помощью службы Visual Studio Team Service (облачная TFS). Существует этап, на котором выполняются тесты, и я хочу, чтобы эти тесты выполнялись с удаленной службой, для которой я не хочу проверять учетные данные.

ответ

1

Существует ряд расширений, доступных на http://marketplace.visualstudio.com, которые помогут вам без каких-либо сложных проблем.

https://marketplace.visualstudio.com/items?itemName=YodLabs.VariableTasks

мне нравится Переменные задачи Пакет, который поставляется с:

  • Set Variable задать значение переменной и, возможно, применить преобразование к нему.
  • Установка переменных с учетными данными Задают имя пользователя/пароль из существующей службы конечной точки
  • Set Variable из JSON извлекает значение из JSON с помощью JSONPath
  • Set Variable из XML извлекает значения из XML с помощью XPath
  • обновления сборки номер Позволяет изменить номер сборки Increment версии Приращивает semver номер версии

Супер легкий ... вы также можете просто искать «JSON» или «переменной», чтобы найти другие варианты ...

+1

Thx, закончил использование https://marketplace.visualstudio.com/ изделия? ITEMNAME = sergeyzwezdin.magic-глыбы –

0

Самые популярные способы:

  • Используйте app secrets
  • Используйте scripts раздел в вашем project.json. У вас есть 4 события - PreCompile, postcompile, prepublish, postpublish
+0

Моя проблема не переопределяется на локальной машине dev. Моя проблема заключается в запуске как части процесса сборки. Я не вижу, как в этом случае может помочь любой из этих вариантов. Как вы можете управлять секретами приложений в командных службах? –

0

Вы можете установить переменное окружение ASPNETCORE_ENVIRONMENT в сборке на что-то вроде "Test". Создайте файл appsettings.json с именем appsettings.Test.Json. Затем, когда вы настраиваете конфигурацию в Startup.cs сделать что-то вроде ...

  var builder = new ConfigurationBuilder() 
      .SetBasePath(env.ContentRootPath) 
      .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true); 

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

+0

Но это нормальный подход, когда вы должны проверить этот файл appsettings, я прошу о подходе, не проверяя «секреты», но переопределяя их в строках –