Преобразование web.config + msdeploy - исключение производственных паролей из системы контроля версий
Нашему web.config нужен пароль базы данных.
Как мы можем указать этот пароль при сборке пакета msdeploy (он же Web Deploy) или при фактическом развертывании?
Мы создаем пакет msdeploy, используя преобразования msbuild (/p:DeployOnBuild=true) и web.config для деталей, специфичных для среды.
1 ответ
Преобразования Web.config по своей конструкции являются преобразованиями времени сборки. Я склонен использовать их только для изменений "все, кроме отладки".
То, что вы хотите, это параметр MSDeploy. Предполагая, что вы используете pubxml
При публикации профиля в сгенерированном пакете автоматически будет указан параметр "Строка подключенияимени-Web.config" (где "Имя" соответствует атрибуту имени в файле web.config), который будет применяться к строке подключения.
Если вы развернете пакет, вы можете изменить строку подключения, указав значение с помощью -setParam
:
Website.deploy.cmd /Y ... ^
-setParam:name="Name-Web.config Connection String",value="connection_string"
При развертывании с использованием профиля публикации вы можете установить значение в pubxml
файл путем обновления MSDeployParameterValue
значение (вы должны увидеть правильное значение в нижней части файла):
<MSDeployParameterValue Include="$(DeployParameterPrefix)DBName-Web.config Connection String">
<ParameterValue>connection_string</ParameterValue>
</MSDeployParameterValue>