У меня есть решение с этими тремя проектами.
- Веб-API
- ДАЛ
- Домен
Проект DAL — это библиотека классов, имеющая веб-ссылку. Таким образом, app.config в этом проекте имеет такой раздел:
<applicationSettings>
<Company.Project.Domain.Properties.Settings>
<setting name="Company_Project_Domain_Some_Service" serializeAs="String">
<value>http://my.server.local:8888/somePath/service.asmx</value>
</setting>
</Company.Project.Domain.Properties.Settings>
</applicationSettings>
У меня установлен медленный гепард, и я использую преобразования конфигурации в этом DAL проект. Например, у меня есть app.production.config, который преобразует приведенную выше веб-ссылку, чтобы указать на производственную веб-ссылку, например:
<applicationSettings>
<Company.Project.Domain.Properties.Settings>
<setting name="Company_Project_Domain_Some_Service" serializeAs="String">
<value>http://my.PRODUCTIONSERVER.local:8888/somePath/service.asmx</value>
</setting>
</Company.Project.Domain.Properties.Settings>
</applicationSettings>
Когда я публикую API, файл web.config не содержит НИКАКИХ параметров приложения, показанных выше. Я могу использовать рефлектор, чтобы углубиться в DAL.dll и увидеть путь service.asmx. Однако преобразование не выполняется, поэтому опубликованное приложение НЕ использует my.PRODUCTIONSERVER.local:8888.
Отсюда два вопроса.
- Почему при публикации НЕ используется преобразование xdt в указанной библиотеке классов?
- Если блок настроек приложения ДОЛЖЕН находиться в файле web.config проекта веб-API, означает ли это, что я должен удалить веб-ссылку из DAL и добавить ее в проект веб-API? ... или я могу просто оставить ссылку и скопировать соответствующий блок applicationSettings в web.config?