Не могу прочитать app.config, почему? - PullRequest
2 голосов
/ 28 марта 2010

Я пытаюсь получить данные из app.config и всегда получаю ноль. App.config находится здесь:

    <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="ExplorerContext" connectionString="metadata=res://*/ExplorerData.csdl|res://*/ExplorerData.ssdl|res://*/ExplorerData.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MYT\SQLEXPRESS;Initial Catalog=Explorer;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

Может кто-нибудь объяснить, что не так, почему я не могу получить значения, System.Configuration.ConfigurationManager.AppSettings.Count всегда 0

Я не могу указать, что я использую библиотеку классов, которую я пытаюсь проверить с помощью проекта NUnit. И эта библиотека классов вызывает еще один проект (тоже библиотека классов), который использует ADO.NET Entity Project.

Ответы [ 3 ]

7 голосов
/ 28 марта 2010

Вы не используете AppSettings! Отметьте ConfigurationManager.ConnectionStrings вместо.

1 голос
/ 28 марта 2010

Я забыл указать, что я использую класс библиотека, которую я пытаюсь проверить используя проект NUnit. И этот класс библиотека вызывает еще один проект (класс библиотека тоже), который использует ADO.NET Entity Проект.

Вам необходимо поместить информацию о конфигурации в основное приложение - приложение, которое использует / вызывает ваш проект библиотеки классов с моделью EF. Конфигурация .NET изначально не поддерживает app.config уровня библиотеки классов.

Итак, в вашей тестовой среде эти основные тестовые наборы должны иметь эти записи в своем app.config.

Если вы настаиваете на том, что ваша сборка библиотеки классов имеет свою собственную конфигурацию - посмотрите Jon Rista's Cracking the Mysters of .NET 2.0 Configuration , где он подробно объясняет, как использовать вызов ConfigurationManager.OpenExeConfiguration для открытия любой произвольный файл * .config и использовать его в системе конфигурации .NET 2.0. Это работает - но это больше работы, и я бы не стал этого рекомендовать.

1 голос
/ 28 марта 2010

У вас нет объявленных AppSettings в вашем конфигурационном файле. Если вы пытаетесь получить строки подключения, вы должны использовать:

var connectionString = ConfigurationManager.ConnectionStrings["ExplorerContext"].ConnectionString;

РЕДАКТИРОВАТЬ Если вы используете NUnit, вы можете предоставить файл конфигурации, если он назван в честь DLL. Например, если DLL называется Foo.dll, то файл конфигурации должен называться Foo.dll.config. Visual Studio не сделает это за вас для DLL. Вы должны создать файл вручную и убедиться, что он попадает в нужную папку bin.

Подробнее см. Файлы конфигурации NUnit .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...