Как преобразовать строки подключения в app.config - PullRequest
0 голосов
/ 16 октября 2019

Я работаю над конвейером CI / CD для довольно большого проекта, который был создан 3 года назад, и это проект asp.net core 2.1 (.NET Framework). Этот проект хранит строки подключения в файле app.config для EF 6. Я пытался создать пакет Web Deploy для этого проекта, но VS не может обнаружить строку подключения в app.config, я пытался создать пользовательский файл Parameters.xml

<parameter name="OptagEntities-app.config Connection String" description="doesn't matter" defaultvalue="__OptagEntities__" tags="">
      <parameterentry kind="XmlFile" scope="\\app.config$" match="/configuration/connectionStrings/add[@name='OptagEntities']/@connectionString">
</parameterentry>

Я попытался развернуть этот проект в локальном IIS и вижу, что строка подключения не обновляется из значения в файле SetParameters.xml. У нас есть сервер TFS, и тот же поток работает для проекта webform. Отличается Web config, и этот проект использует app.config, потому что ядро ​​.NET Framework asp.net создает web.config только при публикации. Я знаю, что могу использовать appsetting.json для преобразования различных ENV, но это требует изменения кода, и самое худшее, что этот проект ссылается на другой проект через nuget, который также использует строку подключения в app.config. Любой способ обойти это?

1 Ответ

0 голосов
/ 01 ноября 2019

Я использую кодовый удар для изменения строки соединения EF6 во время выполнения, myConnectionStrings может загружаться из appsettings.json

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
connectionStringsSection.ConnectionStrings["Entities"].ConnectionString = "myConnectionStrings";
config.Save();
ConfigurationManager.RefreshSection("connectionStrings");
...