Я использую «Build Deployment Package» (сокращенно BDP) от visual studio 2010 уже несколько месяцев. Он прекрасно работает и выполнил основные требования, которые мы хотели.
Я решил сделать еще один шаг и выяснить, как получить свою пользовательскую конфигурацию, чтобы ее можно было изменить в файле Project.SetParameters.xml, созданном BDP. То, как мы используем это, мы создаем этот пакет развертывания и доставляем его на сервер клиентов. Каждый сервер может отличаться, поэтому мы храним файл SetParameters.xml на сервере и просто заменяем zip-файл для последующих обновлений. Мы используем инструмент WebDeploy для развертывания его с помощью поставляемого файла cmd, созданного Build Deployment Package.
Я начал работать над этой трансформационной веб-конфигурацией, которая довольно крутая, но я не думаю, что полностью ее понимаю. Я могу заставить его выполнять элементы, которые являются нормальными в файле web.config (например, строку подключения, настройки веб-сервера и т. Д.), Однако я не могу на всю жизнь заставить его сгенерировать параметры для разделов конфигурации, которые являются частью других библиотек DLL. включен в web.config. Например:
Например. скажем, это web.config для веб-проекта, который ссылается на несколько других сборок:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="SomeAssembly.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<SomeAssembly.Properties.Settings>
<setting name="ExportLocation" serializeAs="String">
<value>C:\MediaExports\</value>
</setting>
</SomeAssembly.Properties.Settings>
</applicationSettings>
</configuration>
и мой трансформатор:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="SomeAssembly.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<SomeAssembly.Properties.Settings>
<setting name="ExportLocation" value="[MakeMeSetParameter.xml-Entry]" serializeAs="String" xdt:Transform="SetAttributes" xdt:Locator="Match(value)"/>
</SomeAssembly.Properties.Settings>
</configuration>
Пример файла project.xml (не из вышеприведенного, но сгенерированного для моего проекта):
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="IIS Web Application Name" value="SomeIISNameHere" />
<setParameter name="SomeAssemblySetting-SomeDescriptionOddPlaceforit" value="TheValueToBePlaced" />
<setParameter name="SomeGeneratedValueIwant" value="TheNewMediaExportLocation"/>
</parameters>
Я не могу понять, что поместить в преобразователь web.config, чтобы он генерировал выходные данные для Project.SetParameters.xml. «Токенизированные» параметры.
Теперь я знаю, что не до конца понимаю, но не могу найти примеров людей, использующих пользовательские конфигурации для других сборок, на которые ссылается проект. Похоже, что почти все примеры касаются строк соединений и других общих элементов web.config.
Самое близкое, что я мог найти к тому, что я пытаюсь сделать, это http://sedodream.com/2010/11/11/ASPNETWebApplicationPublishPackageTokenizingParameters.aspx, однако, опять-таки речь идет о строках соединения, а не о пользовательских настройках параметров для других сборок, которые я хочу установить. Я хочу создать эти токены для чего-либо в web.config.
Итак, мой вопрос: как нам сконфигурировать файл конфигурации трансформатора, чтобы BDP мог генерировать SetParameters.xml с дополнительными узлами setParameter для пользовательских конфигураций в web.config?