.NET .config HELL

У меня есть следующие проекты:

  1. MVC
  2. Консольное приложение
  3. Библиотека классов
  4. Приложение Windows Forms
  5. COM-библиотека

Все эти приложения нуждаются в использовать один файл конфигурации. Насколько я понимаю, файлы app.config предназначены для Windows, консольных приложений и библиотек классов, тогда как web.config - для веб-проектов.

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

Я не совсем понимаю, как файлы конфигурации получают сборку. В настоящее время я написал простой проект, в котором у меня есть следующее:

  1. Библиотека классов для хранения файлов конфигурации. A попытались сделать это путем размышления.
  2. Приложение Windows, которое должно читать app.config из библиотеки классов.

Когда я выполняю следующий код, я ожидаю получить файл конфигурации с тестовыми значениями:

_applicationSettings = ConfigurationManager.OpenExeConfiguration(
                    System.Reflection.Assembly.GetAssembly(typeof(WCSConfiguration)).Location
                    ).AppSettings;    

Вместо этого я получаю пустой файл настроек приложения .

Библиотека классов содержит следующий файл App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="TestTextKey" value="TestTextValue"/>
  </appSettings> 
</configuration>

Я пробовал использовать метод .GetExecutingAssembly () , который, как я ожидаю, вернет сборку кода, который выполняется в данный момент. Это не сработало, вместо этого была возвращена сборка приложения Windows.

GetAssembly (type (WCSConfiguration)) вернул правильную сборку, однако файл конфигурации отсутствовал в каталоге bin / debug.

У меня такое ощущение, что либо я ' я делаю что-то принципиально неправильное, или Microsoft не сделала это достаточно гибким. Я также попытался найти объяснение в MSDN, но это не было хорошо задокументировано IMO.

Я также оставил COM полужирным шрифтом, потому что я не уверен, будут ли вообще доступны какие-либо файлы конфигурации для библиотеки COM. Во-первых, хотелось бы, чтобы работали другие проекты.

Я понимаю, что это много информации. Любая помощь будет принята с благодарностью. Ранее мы решили использовать реестр, но это оказалось неприятным, главным образом потому, что доступ к реестру недоступен в некоторых сценариях. Кроме того, теперь у нас есть несколько версий приложений, и переключение между ветвями занимает получасовое задание: (

Спасибо

Редактировать:

Если я добавлю разделы конфигурации dll в app. config, что означает, что эти настройки будут доступны только из этого приложения. Пожалуйста, поправьте меня, если я ошибаюсь. Пример, который я привел, - это уменьшенная версия. Всего существует около десяти приложений Windows, один проект MVC и ряд библиотек классов, все из которых должны использовать эту конфигурацию.

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

Я бы хотел получить от этого хорошее работоспособное решение, чтобы его можно было опубликовать в Интернете, и другие люди, столкнувшиеся с той же проблемой, не тратили бы дни своего времени.

Боевой дух рассказа IMO: Пример, который я привел, - это уменьшенная версия. Всего существует около десяти приложений Windows, один проект MVC и ряд библиотек классов, все из которых должны использовать эту конфигурацию.

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

Я бы хотел получить от этого хорошее работоспособное решение, чтобы его можно было опубликовать в Интернете, и другие люди, столкнувшиеся с той же проблемой, не тратили бы дни своего времени.

Боевой дух рассказа IMO: Пример, который я привел, - это уменьшенная версия. Всего существует около десяти приложений Windows, один проект MVC и ряд библиотек классов, все из которых должны использовать эту конфигурацию.

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

Я бы хотел получить от этого хорошее работоспособное решение, чтобы его можно было опубликовать в Интернете, и другие люди, столкнувшиеся с той же проблемой, не тратили бы дни своего времени.

Боевой дух рассказа IMO: один проект MVC и ряд библиотек классов, все из которых должны использовать эту конфигурацию.

Параметры конфигурации - это в основном строки подключения, значения поиска, которые не принадлежат базе данных, и несколько других второстепенных параметров. На этом этапе основное внимание уделяется строкам подключения. Существует несколько второстепенных выпусков приложения, каждый из которых указывает на отдельную базу данных.

Я бы хотел получить от этого хорошее работоспособное решение, чтобы его можно было опубликовать в Интернете, и другие люди, столкнувшиеся с той же проблемой, не тратили бы дни своего времени.

Боевой дух рассказа IMO: один проект MVC и ряд библиотек классов, все из которых должны использовать эту конфигурацию.

Параметры конфигурации - это в основном строки подключения, значения поиска, которые не принадлежат базе данных, и несколько других второстепенных параметров. На этом этапе основное внимание уделяется строкам подключения. Существует несколько второстепенных выпусков приложения, каждый из которых указывает на отдельную базу данных.

Я бы хотел получить от этого хорошее работоспособное решение, чтобы его можно было опубликовать в Интернете, и другие люди, столкнувшиеся с той же проблемой, не тратили бы дни своего времени.

Боевой дух рассказа IMO: На этом этапе основное внимание уделяется строкам подключения. Существует несколько второстепенных выпусков приложения, каждый из которых указывает на отдельную базу данных.

Я бы хотел получить от этого хорошее работоспособное решение, чтобы его можно было опубликовать в Интернете, и другие люди, столкнувшиеся с той же проблемой, не тратили бы дни своего времени.

Боевой дух рассказа IMO: На этом этапе основное внимание уделяется строкам подключения. Существует несколько второстепенных выпусков приложения, каждый из которых указывает на отдельную базу данных.

Я бы хотел получить от этого хорошее работоспособное решение, чтобы его можно было опубликовать в Интернете, и другие люди, столкнувшиеся с той же проблемой, не тратили бы дни своего времени.

Боевой дух рассказа IMO: Используйте как App.config, так и Web.config, чтобы сохранить местоположение вашего собственного файла конфигурации.

Напишите простой XML-сериализатор для чтения / записи конфигурации и DLL для обслуживания конфигурации.

COM-объекты - длинная история и были реализованы с помощью «взлома», поскольку ни App.config, ни Web.config не доступны в COM DLL.

6
задан John Saunders 5 September 2014 в 21:10
поделиться