2013-07-02 2 views
0

У меня проблемы с текущим проектом. У меня есть решение с двумя отдельными проектами. Первый - это мой проект, который я публикую, у которого есть файл web.config. Второй - проект доступа к данным, содержащий только файлы .cs и имеющий файл app.config, а также папку свойств, содержащую файл Settings.settings.Общий доступ к файлу конфигурации сети.

Как так:

Solution 
    DataProject 
     app.config 
     Settings.settings 
     Code.cs 

    PublishProject 
     Code Files 
     Web.config 

Моя проблема в том, что я хочу, чтобы иметь возможность редактировать настройки app.config файлов после того, как решение было опубликовано, но файл app.config получает свернутый в DataProject. dll, которая находится в папке bin в PublishProject. Из-за этого я не могу получить доступ к файлу app.config, чтобы редактировать его после публикации.

Я попытался настроить файл app.config как связанный файл, который просто указывает на файл Web.config в другом проекте, но проблема в том, что файл настроек не обновляется с правильными значениями из файл app.config, если вы не откроете файл настроек в Visual Studio и не перезагрузите его. Значения в файле настроек - это те, которые используются во всем приложении.

Прямо сейчас только обходным путем является изменение конфигурации и повторная публикация проекта.

ответ

0

В случае, если кто-то бежит в эту проблему, вот решение, которое я был в состоянии использовать:

Создайте файл XML в PublishProject и преобразовывать данные в app.config в отдельные теги XML следующим образом:

<configuration>  
    <setting name="debug" serializeAs="String"> 
       <value>False</value> 
    </setting> 
</configuration> 

становится

<Properties> 
    <debug>True</debug> 
</Properties> 

После того, как вы сделаете это, вы можете вызвать его в вашем коде, вместо USI ng значение из файла Settings.settings.

XmlDocument doc = new XmlDocument(); 
String appPath = HttpContext.Current.Server.MapPath("~").ToString() + @"/App_Data/Properties.xml"; 
doc.Load(appPath); 
debug = Convert.ToBoolean(doc.SelectSingleNode("Properties/debug").InnerText.ToString()); 

Примечание: что я положил его в папку App_Data готового проекта, потому что папка не доступна через браузер по умолчанию.

Смежные вопросы