Есть ли способ использовать Slow Cheetah для преобразования app.config в рабочую роль Azure?

Я пытаюсь использовать Slow Cheetah для переключения между строкой подключения локальной базы данных и строкой подключения SQL Azure. Это рабочая роль Azure, которую я отправляю в Azure с помощью TeamCity. Когда я просматриваю файл журнала, процесс Slow Cheetah работает правильно и создает преобразованный app.config, но будущий шаг сборки (который я не думаю, что могу контролировать) заключается в записи преобразованного файла с исходным app.config .

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


person Jack Woodward    schedule 18.03.2012    source источник
comment
Если вас интересует эта функция, проголосуйте за нее на странице slowcheetah.uservoice.com/forums/185106-general/suggestions/   -  person Sayed Ibrahim Hashimi    schedule 29.11.2012
comment
Последняя версия Slow Cheetah работала. Используйте Service Config, если можете. Но мое требование состояло в том, чтобы интегрировать пользовательский раздел конфигурации из стороннего продукта.   -  person Dennis Burton    schedule 17.01.2014


Ответы (2)


При работе с рабочими и тестовыми/локальными средами для Azure рекомендуется хранить такие сведения о конфигурации в файлах конфигурации службы, а не в файле web.config. Вы можете создать столько файлов конфигурации службы, сколько хотите, а затем выбрать нужный файл .cscfg с помощью графического интерфейса или cspack при публикации решения. По умолчанию шаблоны Azure в Visual Studio предоставляют два файла .cscfg:

  • ServiceConfiguration.Cloud.cscfg
  • ServiceConfiguration.Local.cscfg

Вы можете использовать эти существующие файлы, чтобы добавить две разные записи строки подключения или создать свои собственные. Вы можете сохранить значение строки подключения в файле .cscfg, как показано ниже:

<ConfigurationSettings>
  <Setting name="DbConnectionString" value="blah" />
</ConfigurationSettings>

Затем вы можете получить значение записи параметра конфигурации в своем коде, как показано ниже:

RoleEnvironment.GetConfigurationSettingValue("DbConnectionString")

Соответствующие разделы MSDN для этого сценария ниже:

person Monochrome    schedule 18.03.2012
comment
Это было гораздо более простое решение, и я в конечном итоге использовал его и отказался от своих усилий по Slow Cheetah. Что-то вроде взлома, но для поддержки автоматического развертывания в Azure я просто жестко закодировал имя файла конфигурации в скрипте сборки. Спасибо Монохром. - person Jack Woodward; 12.05.2012

Я согласен с Monochrome в том, что строки подключения должны быть помещены в конфигурацию службы, однако бывают ситуации, когда вам нужны некоторые изменения конфигурации, не связанные со строками подключения, которые следует применять только при развертывании в Azure. Например, в моем собственном проекте мне нужно было изменить некоторую конфигурацию log4net при развертывании в Azure.

Я нашел эту статью, в которой объясняется, как сделать SlowCheetah работают с проектом рабочей роли и Windows Azure. Вам нужно внести небольшое изменение в файл проекта Azure, чтобы скопировать преобразованный файл конфигурации.

<Target Name="CopyWorkerRoleConfigurations" BeforeTargets="AfterPackageComputeService">
    <Copy SourceFiles="..\WorkerRoleName\bin\$(Configuration)\WorkerRoleName.dll.config" DestinationFolder="$(IntermediateOutputPath)WorkerRoleName" OverwriteReadOnlyFiles="true" />
    </Target>
</Project>

Возможно, вам придется настроить атрибут SourceFiles, чтобы он соответствовал вашей структуре каталогов. Но это все, что нужно сделать.

person René    schedule 12.10.2012