Как отделить конфигурационный файл? - PullRequest
0 голосов
/ 30 октября 2009

У меня есть решение .net с такой иерархией ссылок MyWinApp-> ServerCore-> DataAccess где последние две - библиотеки классов, а myWinApp - приложение для Windows.

Теперь, каждый раз, когда я хочу запустить этот проект на разных серверах, мне нужно перестраивать проект, поскольку мне не удалось разделить файл конфигурации (app.config) проекта DataAccess, который имеет конфигурации, связанные со строкой соединения. *

Как я могу отделить конфигурации базы данных от кода приложения? Я пытался создать варианты действий, но это не сработало: S Какое может быть наиболее выполнимое решение?

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 30 октября 2009

Конфигурация, скорее всего, должна идти с проектом MyWinApp. Файл конфигурации идет вместе с тем, что выполняется. Поэтому, если вы создадите установщик для своего приложения, у него будет файл конфигурации MyWinApp.exe.config, который был создан из вашего App.Config.

В основном app.config с вашим Datalayer.dll на самом деле мало что делает.

Что вы можете сделать, это посмотреть, как работает свойство configSource для файлов конфигурации в .net здесь: http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.configsource.aspx и посмотреть, ищите ли вы это. Это позволяет вам установить configSource для ваших строк подключения, которые вы можете изменить для каждой машины.

Все, что я делаю, это настраиваю простую xcopy перед развертыванием, и у меня есть правильные параметры конфигурации перед развертыванием приложения asp.net. Если вам необходимо упаковать установщик, копирование правильных файлов перед сборкой установщика также должно помочь.

1 голос
/ 30 октября 2009

Для моих проектов DAL у меня обычно есть файл DataLayer.dll.config, но я фактически добавляю записи ConnectionString в мой файл Program.exe.config. Я не знаю, что вам нужно что-то особенное для этого. Возможно, просто ссылаться на статическую строку только для чтения или что-то из DataLayer.dll в Program.exe?

Или вы действительно хотите иметь отдельные файлы конфигурации? Если это так, то вы можете использовать класс ConfigurationManager, чтобы открыть свободный файл конфигурации с помощью метода OpenMappedMachineConfiguration. См. Ссылку MSDN здесь: http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.openmappedmachineconfiguration.aspx

0 голосов
/ 30 октября 2009

Я думаю, что вы можете использовать ApplicationSettings, чтобы включить конфигурацию для определенных сборок:

Например:

<configuration>
 <applicationSettings>
     <ProjectName.Properties.Settings>
        <setting name="ConnectionString" serializeAs="String">
           <value>YourConnectionStringHere</value>
        </setting>
     </ProjectName.Properties.Settings>
  </applicationSettings>
</configuration>

Где «ProjectName» - это имя ссылки, которую нужно настроить. Каждый проект может иметь свой собственный app.config с указанной выше записью applicationSettings и значением, характерным для самого проекта.

...