Ссылка на преобразование проекта app.config с помощью SlowCheetah

У меня есть веб-проект ASP.NET MVC 4.

Веб-интерфейс

который ссылается на библиотеку кода ASP.NET 4

ДАЛ

Библиотека кода содержит ссылку на пакет NuGet SlowCheetah 2.5.5 и содержит несколько преобразований для него App.Config.

WebUI использует обычные преобразования Web.Config, но я также добавил ссылку на SlowCheetah в качестве теста для моей проблемы, но это не изменило мою проблему.

Когда я публикую с помощью

Веб-развертывание MS

в Visual Studio 2012 или когда я публикую прямо в

Файловая система

используя конфигурацию QA, правильная Web.QA.config помещается в корень моего веб-сайта, однако указанная конфигурация библиотеки классов не работает, я получаю сообщение об ошибке соединения sql на домашней странице, которое предупреждает меня о том, что правильное преобразование App.Config, скорее всего, не используется для упомянутого проекта DAL.

Я думал, что это будет файл .dll.config в папке bin для WebUI, но я не слишком уверен, поскольку у меня это работает на другом веб-сервере, где я вручную изменил файлы App.Config и Web.Config по умолчанию, а в папке нет файла .dll.config. корневой bin каталог сайта.

Кто-нибудь знает, как заставить это работать?

ОБНОВЛЕНИЕ:

Примеры ниже:

DAL Проект библиотеки кода App.Config

<configuration>
    <configSections>
 </configSections>
    <connectionStrings>
  <add name="DAL.Properties.Settings.DefaultConnection" connectionString="Data Source=(local);Initial Catalog=MyDB;Integrated Security=True;" />
 </connectionStrings>
</configuration>

Часть Web.Config из моего проекта WebUI

  <connectionStrings>
    <add name="WebUI.Properties.Settings.DefaultConnection" connectionString="Data Source=(local);Initial Catalog=MyDB;Integrated Security=True;" />
  </connectionStrings>

Я использую файл Settings.settings для каждого проекта.

Как я могу объединить соединение App.Config с моим Web.Config, чтобы оно преобразовывалось во время публикации? желательно, чтобы он просто использовал одно соединение при публикации в Интернете.

На данный момент проект, на который ссылается DAL, работает в веб-приложении, если я правильно установил app.config (что имеет для меня некоторый смысл, поскольку это ссылка на .dll).

Добавление этого соединения DAL.Properties.Settings.DefaultConnection к моему web.config заменяет то, которое использует DAL?


person Pricey    schedule 03.06.2013    source источник


Ответы (1)


Все ваши настройки для веб-приложения будут поступать из файла web.config — файл app.config не будет использоваться или развертываться вместе с веб-приложением. Скорее всего, эта конфигурация существует, потому что вы используете Entity Framework, и именно здесь функция EDMX хранит свою строку подключения. Если вы поместите строку подключения в web.config (и используете соответствующие преобразования конфигурации), все будет хорошо.

person M Smearer    schedule 03.06.2013
comment
Я использую Dapper в своем проекте DAL. Соединение с базой данных, которое находится в моем App.Config, используется в этом проекте DAL как часть репозитория... оно используется только тогда, когда WebUI не предоставляет моему репозиторию существующее соединение для выполнения запроса к базе данных. Оба соединения имеют разные имена, если этот app.config не нужен, то не должна ли публикация работать? Я знаю, что это работает, когда я вручную устанавливаю Web.Config и App.Config по умолчанию для требуемого соединения, но я хочу, чтобы публикация выбрала правильный файл конфигурации. - person Pricey; 03.06.2013
comment
Чтобы добавить к этому, DAL не знает о WebUI и не будет иметь доступа к соответствующей строке подключения в конфигурации. - person Pricey; 04.06.2013
comment
Как правило, у вас есть один файл .config для каждой границы приложения. Если это .exe, у вас есть app.config. Если это веб-приложение, у вас есть файл web.config. Только один. Когда вы запускаете ConfigurationManager в коде, он будет использовать .config, связанный с приложением, а не с каким-либо компонентом. - person M Smearer; 04.06.2013
comment
Другими словами, app.config, связанный с вашим DAL, не имеет смысла во время выполнения — он не будет использоваться каким-либо образом, если только вы не напишете для этого очень странный, нестандартный код. ВСЕ настройки конфигурации для вашего веб-приложения должны быть в файле web.config. - person M Smearer; 04.06.2013
comment
так вы говорите, что его нужно объединить с web.config, а также, что более важно, теперь мой DAL должен иметь ссылку на мой WebUI? что я не вижу, что ему нужно что-то знать о пользовательском интерфейсе. - person Pricey; 04.06.2013
comment
Я говорю, что настройки, которые использует ваш DAL, будут в файле web.config. Справка не нужна. Ознакомьтесь с ответом здесь - person M Smearer; 04.06.2013
comment
Хорошо, спасибо. Я думаю, что мое замешательство возникло из-за того, что в моем решении есть указанный проект внутри него, и по какой-то сумасшедшей причине я чувствовал, что когда я публикую свой WebUI, он будет знать, что нужно использовать правильное соединение в указанном проекте. Что меня также смущает, так это то, как это работает, правильно устанавливая файл app.config, даже если соединение, необходимое моему эталонному проекту, не находится внутри моего web.config. - person Pricey; 04.06.2013
comment
Пожалуйста, взгляните на мое обновление к моему вопросу, потому что ваша ссылка только что подтвердила, что я должен поместить DAL соединение в свой Web.Config, но я не совсем уверен, как я должен справиться с этим и можно ли это сделать автоматически на основе App.Config в проект DAL. - person Pricey; 04.06.2013
comment
Я исправил это, переключившись на использование диспетчера конфигурации и удалив материал app.config из моего DAL. - person Pricey; 11.06.2013